题目链接
https://codeforces.com/problemset/problem/1144/F
代码
#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<string> #include<vector> #include<stack> #include<bitset> #include<cstdlib> #include<cmath> #include<set> #include<list> #include<deque> #include<map> #include<queue> using namespace std; #define ll long long const int MAXN=2E5+10; vector<int> G[MAXN]; int V,E; int color[MAXN],s[MAXN],t[MAXN]; bool dfs(int v,int c) { color[v]=c; for(int i=0;i<G[v].size();i++) { if(color[G[v][i]]==c) return false; if(color[G[v][i]]==0&&!dfs(G[v][i],-c)) return false; } return true; } int main() { scanf("%d%d",&V,&E); memset(color,0,sizeof(color)); for(int i=0;i<E;i++) { scanf("%d%d",&s[i],&t[i]); G[s[i]].push_back(t[i]); G[t[i]].push_back(s[i]); } for(int i=1;i<=V;i++) { if(color[i]==0) { if(!dfs(i,1)) { printf("NO "); return 0; } } } printf("YES "); for(int i=0;i<E;i++) { if(color[s[i]]==1&&color[t[i]]==-1) cout<<"1"; else cout<<"0"; } return 0; }