日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

CF - 741(C. Arpa’s overnight party and Mehrdad’s silent entering) 二分图构造

發(fā)布時(shí)間:2024/4/18 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CF - 741(C. Arpa’s overnight party and Mehrdad’s silent entering) 二分图构造 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目鏈接

題意

已經(jīng)給出情侶的座位編號(hào),將兩種飯分配給N對(duì)情侶.滿(mǎn)足以下兩個(gè)要求:

  • 情侶之間不能吃相同的飯
  • 座位號(hào)連續(xù)的三個(gè)人不能吃同一種飯
  • 問(wèn)是否存在滿(mǎn)足的解.

    思路

    構(gòu)造二分圖

  • 對(duì)應(yīng)情侶的座位建邊,保證情侶之間不吃一種飯
  • [2i-1, 2i]建邊,保證座位號(hào)相鄰的3個(gè)人不全吃一種飯
  • #include <bits/stdc++.h> const int maxn = 2e5 + 5; const int inf = 0x3f3f3f3f; const int mod = 1e9 + 7; using namespace std; vector<int> g[maxn]; void add(int u, int v) {g[u].push_back(v); g[v].push_back(u); } int color[maxn], flag; void dfs(int u, int col) {color[u] = col;for (int i = 0; i < (int)g[u].size(); ++i) {int v = g[u][i];if (color[v] == -1) dfs(v, col^1);else if (color[v] == col) flag = -1;} } vector<pair<int,int>> all; int main() {ios::sync_with_stdio(0);cin.tie(0), cout.tie(0);int n;scanf("%d", &n);for (int i = 1, u, v; i <= n; ++i) {add(i*2-1, i*2);scanf("%d %d", &u, &v);all.push_back(make_pair(u, v));add(u, v);}fill(color, color+maxn, -1);flag = 1;for (int i = 1; i <= n*2; ++i) {if (color[i] == -1) dfs(i, 0);}if (flag == -1) puts("-1");else {for (auto it : all) {printf("%d %d\n", color[it.first]+1, color[it.second]+1);}}return 0; }

    總結(jié)

    以上是生活随笔為你收集整理的CF - 741(C. Arpa’s overnight party and Mehrdad’s silent entering) 二分图构造的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。