Основное
 
 
Отправитель Задача Язык Вердикт Время Память Отослано Протест.  
187447722 Дорешивание:
DaiRuiChen007
1726D - 32 C++14 (GCC 6-32) Полное решение 654 мс 18364 КБ 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;
}
?
Время: ? ms, память: ? КБ
Вердикт: ?
Ввод
?
Вывод участника
?
Ответ жюри
?
Комментарий чекера
?
Диагностика
?
Показать детали тестирования