生活随笔
收集整理的這篇文章主要介紹了
牛客 contest893 G-Truthman or Fakeman
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目鏈接
NNN個(gè)人,MMM句話。每一句話這樣描述 (U,V,W)(U,V,W)(U,V,W) UUU 認(rèn)為 VVV 是TruthmanTruthmanTruthman或者 FakemanFakemanFakeman
根據(jù)這MMM句話求TruthmanTruthmanTruthman最多的一種情況,誤解輸出?1-1?1。
思路
一共有兩種情況:
- UUU 認(rèn)為 VVV 是TruthmanTruthmanTruthman,U,VU,VU,V同時(shí)為真或同時(shí)為假。
- UUU 認(rèn)為 VVV 是FakemanFakemanFakeman,U,VU,VU,V一人為真一人為假。
我么可以把同一類的人用并查集合到一起, 然后判斷是否有解。如何構(gòu)造TruthmanTruthmanTruthman最多的情況?我們可以在并查集中為每個(gè)人定義一個(gè)權(quán)值或者是標(biāo)記,記錄這個(gè)人是TruthmanTruthmanTruthman還是FakemanFakemanFakeman,這樣并查集就可以比較那個(gè)TruthmanTruthmanTruthman的人多。
#include <bits/stdc++.h>
#define LL long long
#define P pair<int, int>
#define lowbit(x) (x & -x)
#define mem(a, b) memset(a, b, sizeof(a))
#define mid ((l + r) >> 1)
#define lc rt<<1
#define rc rt<<1|1
#define endl '\n'
const int maxn
= 1e5 + 5;
const int inf
= 0x3f3f3f3f;
const int mod
= 1e9 + 7;
using namespace std
;
int vis
[maxn
<<1], sz
[maxn
<<1], pre
[maxn
<<1];
int ans
[maxn
], n
, m
;
int find
(int x
) {return (x
== pre
[x
]) ? x
: pre
[x
] = find(pre
[x
]);
}
void join(int x
, int y
) {int fx
= find(x
);int fy
= find(y
);if (fx
== fy
) return;pre
[fy
] = fx
;sz
[fx
] += sz
[fy
];
}void solve() {for (int i
= 1; i
<= n
; ++i
) {int fx
= find(i
); int fy
= find(i
+n
);if (fx
== fy
) {cout
<< -1 << endl
;return;}if (vis
[fx
] == 0) {if (sz
[fx
] > sz
[fy
]) {vis
[fx
] = 1;vis
[fy
] = -1;}else {vis
[fy
] = 1;vis
[fx
] = -1;}}ans
[i
] = (vis
[fx
] == 1);}for (int i
= 1; i
<= n
; ++i
) {cout
<< ans
[i
];}cout
<< endl
;
}
int main
() {ios
::sync_with_stdio(0);cin
.tie(0), cout
.tie(0);int T
;cin
>> T
;while (T
--) { cin
>> n
>> m
;for (int i
= 1; i
<= n
*2; ++i
) {pre
[i
] = i
;sz
[i
] = (i
<= n
);vis
[i
] = 0;}for (int i
= 0, u
,v
,w
; i
< m
; ++i
) {cin
>> u
>> v
>> w
;if (w
) {join(u
, v
);join(u
+n
, v
+n
);}else {join(u
, v
+n
);join(u
+n
, v
);}}solve();}return 0;
}
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖
總結(jié)
以上是生活随笔為你收集整理的牛客 contest893 G-Truthman or Fakeman的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。