?
# | Author | Problem | Lang | Verdict | Time | Memory | Sent | Judged | |
---|---|---|---|---|---|---|---|---|---|
187447722 |
Practice: DaiRuiChen007 |
1726D - 32 | C++14 (GCC 6-32) | Accepted | 654 ms | 18364 KB | 2022-12-31 16:03:35 | 2022-12-31 16:03:35 |
// LUOGU_RID: 98388332 #include<bits/stdc++.h> #define pii pair<int,int> using namespace std; const int MAXN=2e5+5; int dsu[MAXN],dep[MAXN],fa[MAXN]; bool col[MAXN]; vector <pii> G[MAXN]; inline void dfs(int p,int f) { for(auto e:G[p]) { int v=e.first; if(v==f) continue; dep[v]=dep[p]+1; fa[v]=e.second; dfs(v,p); } } inline int find(int x) { if(dsu[x]==x) return x; return dsu[x]=find(dsu[x]); } inline void solve() { int n,m,x=0,y=0; scanf("%d%d",&n,&m); for(int i=1;i<=n;++i) dsu[i]=i,G[i].clear(); set <int> ver; vector <int> id; for(int i=1;i<=m;++i) { int u,v; scanf("%d%d",&u,&v); int a=find(u),b=find(v); if(a==b) { ver.insert(u),ver.insert(v); if(!id.size()) x=u,y=v; col[i]=0,id.push_back(i); } else { col[i]=1,dsu[a]=b; G[u].push_back(make_pair(v,i)); G[v].push_back(make_pair(u,i)); } } dfs(1,0); if((int)id.size()==3&&(int)ver.size()==3) { col[id[0]]=1; if(dep[x]<dep[y]) swap(x,y); col[fa[x]]=0; } for(int i=1;i<=m;++i) printf("%d",col[i]); puts(""); } signed main() { int T; scanf("%d",&T); while(T--) solve(); return 0; }
?
?
?
?