Task: | Building Teams |
Sender: | minghao |
Submission time: | 2024-09-09 17:34:30 +0300 |
Language: | C++ (C++11) |
Status: | READY |
Result: | ACCEPTED |
test | verdict | time | |
---|---|---|---|
#1 | ACCEPTED | 0.00 s | details |
#2 | ACCEPTED | 0.00 s | details |
#3 | ACCEPTED | 0.00 s | details |
#4 | ACCEPTED | 0.00 s | details |
#5 | ACCEPTED | 0.00 s | details |
#6 | ACCEPTED | 0.08 s | details |
#7 | ACCEPTED | 0.08 s | details |
#8 | ACCEPTED | 0.08 s | details |
#9 | ACCEPTED | 0.08 s | details |
#10 | ACCEPTED | 0.05 s | details |
#11 | ACCEPTED | 0.00 s | details |
#12 | ACCEPTED | 0.00 s | details |
Compiler report
input/code.cpp: In function 'void Test()': input/code.cpp:57:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result] 57 | freopen("temp\\in.txt", "r", stdin); | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~ input/code.cpp: In function 'int main()': input/code.cpp:63:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result] 63 | scanf("%d%d", &n, &m); | ~~~~~^~~~~~~~~~~~~~~~ input/code.cpp:71:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result] 71 | scanf("%d%d", &a, &b); | ~~~~~^~~~~~~~~~~~~~~~
Code
#include<iostream> #include<cstdio> #include<algorithm> typedef long long LL; const int N=100005, M=500005; int head[N], nxt[M], to[M], cnt=-1, mark[N]; bool vis[N], fail_flag; void Add(int u, int v) { nxt[++cnt] = head[u]; head[u] = cnt; to[cnt] = v; } bool DFS(int u, int father) { if(father == 0) { vis[u] = true; mark[u] = 1; } int son_mark = 2; if(mark[u] == 2) son_mark = 1; for (int i = head[u]; i!=-1; i = nxt[i]) { int v = to[i]; if(v == father) continue; if(vis[v]) { if(mark[v]!=son_mark) { fail_flag = true; break; } } else { vis[v] = true; mark[v] = son_mark; if(!DFS(v, u)) break; } } return !fail_flag; } void Test() { freopen("temp\\in.txt", "r", stdin); } int main() { // Test(); int n, m; scanf("%d%d", &n, &m); for(int i=1; i<=n; i++) head[i] = -1; for(int i=1; i<=m; i++) { int a, b; scanf("%d%d", &a, &b); Add(a, b); Add(b, a); } for(int i=1; i<=n; i++) { if(!vis[i] && !DFS(i, 0)) break; } if(fail_flag) printf("IMPOSSIBLE"); else for(int i=1; i<=n; i++) printf("%d ", mark[i]); return 0; }
Test details
Test 1
Verdict: ACCEPTED
input |
---|
10 20 3 4 8 10 3 7 1 8 ... |
correct output |
---|
1 1 1 2 2 1 2 2 2 1 |
user output |
---|
1 1 1 2 2 1 2 2 2 1 |
Test 2
Verdict: ACCEPTED
input |
---|
10 20 1 3 8 10 2 4 6 8 ... |
correct output |
---|
1 1 2 2 1 1 1 2 1 1 |
user output |
---|
1 1 2 2 1 1 1 2 1 1 |
Test 3
Verdict: ACCEPTED
input |
---|
10 20 7 10 3 10 9 10 2 10 ... |
correct output |
---|
1 2 2 1 1 1 2 1 2 1 |
user output |
---|
1 2 2 1 1 1 2 1 2 1 |
Test 4
Verdict: ACCEPTED
input |
---|
10 20 2 4 2 10 7 10 4 6 ... |
correct output |
---|
1 2 1 1 2 2 2 1 2 1 |
user output |
---|
1 2 1 1 2 2 2 1 2 1 |
Test 5
Verdict: ACCEPTED
input |
---|
10 20 3 5 8 10 9 10 1 8 ... |
correct output |
---|
IMPOSSIBLE |
user output |
---|
IMPOSSIBLE |
Test 6
Verdict: ACCEPTED
input |
---|
100000 200000 47355 96505 90709 92058 735 80715 91802 94265 ... |
correct output |
---|
1 2 2 1 2 1 1 1 2 2 1 2 1 1 1 ... |
user output |
---|
1 2 2 1 2 1 1 1 2 2 1 2 1 1 1 ... Truncated |
Test 7
Verdict: ACCEPTED
input |
---|
100000 200000 59991 95794 95150 96051 78453 94730 90411 95523 ... |
correct output |
---|
1 1 1 2 2 1 1 2 1 2 1 2 2 2 1 ... |
user output |
---|
1 1 1 2 2 1 1 2 1 2 1 2 2 2 1 ... Truncated |
Test 8
Verdict: ACCEPTED
input |
---|
100000 200000 89827 96402 65137 86792 80965 94708 19479 48078 ... |
correct output |
---|
1 2 1 1 2 1 2 2 2 1 2 1 1 2 1 ... |
user output |
---|
1 2 1 1 2 1 2 2 2 1 2 1 1 2 1 ... Truncated |
Test 9
Verdict: ACCEPTED
input |
---|
100000 200000 72952 83723 66197 70052 2949 52160 55753 95651 ... |
correct output |
---|
1 1 2 2 2 1 1 2 2 2 2 2 1 2 1 ... |
user output |
---|
1 1 2 2 2 1 1 2 2 2 2 2 1 2 1 ... Truncated |
Test 10
Verdict: ACCEPTED
input |
---|
100000 200000 38942 96755 70049 82663 7746 72732 87819 99029 ... |
correct output |
---|
IMPOSSIBLE |
user output |
---|
IMPOSSIBLE |
Test 11
Verdict: ACCEPTED
input |
---|
5 4 1 2 3 4 4 5 5 3 |
correct output |
---|
IMPOSSIBLE |
user output |
---|
IMPOSSIBLE |
Test 12
Verdict: ACCEPTED
input |
---|
4 5 1 2 1 4 2 3 2 4 ... |
correct output |
---|
IMPOSSIBLE |
user output |
---|
IMPOSSIBLE |