| Task: | Graph painting |
| Sender: | Game of Nolife |
| Submission time: | 2016-05-28 12:36:54 +0300 |
| Language: | C++ |
| Status: | READY |
| Result: | ACCEPTED |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.06 s | details |
| #2 | ACCEPTED | 0.05 s | details |
| #3 | ACCEPTED | 0.15 s | details |
Code
#include <bits/stdc++.h>
#define F first
#define S second
#define X real()
#define Y imag()
using namespace std;
typedef long long ll;
typedef long double ld;
vector<int> g[101010];
bool r[101010];
int happy[101010];
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int tcs;
cin>>tcs;
for (int tc=0;tc<tcs;tc++) {
int n,m;
cin>>n>>m;
for (int i=0;i<m;i++) {
int a,b;
cin>>a>>b;
g[a].push_back(b);
g[b].push_back(a);
}
for (int i=1;i<=n;i+=2) r[i]=true;
set<int> yay;
for (int i=1;i<=n;i++) {
if (r[i]) {
for (auto x : g[i]) {
if (r[x]) happy[i]++;
else happy[i]--;
}
} else {
for (auto x : g[i]) {
if (r[x]) happy[i]--;
else happy[i]++;
}
}
if (happy[i]>0) yay.insert(i);
}
while (!yay.empty()) {
int a=*yay.begin();
yay.erase(a);
if (r[a]) r[a]=false;
else r[a]=true;
happy[a]=-happy[a];
if (r[a]) {
for (auto x : g[a]) {
if (r[x]) {
happy[x]++;
if (happy[x]==1) yay.insert(x);
} else {
happy[x]--;
if (happy[x]==0) yay.erase(x);
}
}
} else {
for (auto x : g[a]) {
if (r[x]) {
happy[x]--;
if (happy[x]==0) yay.erase(x);
} else {
happy[x]++;
if (happy[x]==1) yay.insert(x);
}
}
}
}
for (int i=1;i<=n;i++) {
if (r[i]) cout<<"R ";
else cout<<"B ";
}
cout<<"\n";
for (int i=1;i<=n;i++) {
g[i].clear();
happy[i]=0;
r[i]=false;
}
}
}Test details
Test 1
Verdict: ACCEPTED
| input |
|---|
| 100 7 1 2 5 8 28 2 7 ... |
| correct output |
|---|
| B R B B B B R R B B R B R B B R R B B B B R R R B B B R B R B B B B R B R R B R ... |
| user output |
|---|
| R B R B R B R R B R B R B R B R B B B B B R R R B R B R B R B R B B B R B R B R ... |
Test 2
Verdict: ACCEPTED
| input |
|---|
| 10 38 36 18 28 20 37 22 38 ... |
| correct output |
|---|
| R R B R B R R R R R B B R B R ... |
| user output |
|---|
| R B R R R B R B R B B B R R R ... |
Test 3
Verdict: ACCEPTED
| input |
|---|
| 1 100000 200000 89300 98492 33853 56822 92967 99427 ... |
| correct output |
|---|
| R R R R B R R R B B B R B B B ... |
| user output |
|---|
| B B R B B R R B R B B R B B R ... |
