Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <vector>
- using namespace std;
- const int MX = 10005;
- int color[MX];
- bool flag;
- vector<int>adj[MX];
- void dfs(int n)
- {
- int i;
- for(i=0;i<adj[n].size();i++)
- {
- if(color[adj[n][i]]==color[n])
- {
- flag = false;
- break;
- }
- else if(color[adj[n][i]]==0)
- {
- if(color[n]==1)
- {
- color[adj[n][i]] = 2;
- dfs(adj[n][i]);
- }
- else
- {
- color[adj[n][i]] = 1;
- dfs(adj[n][i]);
- }
- }
- }
- }
- int main()
- {
- freopen("in.txt","r",stdin);
- int node, edge, i, p, q;
- while(cin>>node>>edge)
- {
- memset(color,0,sizeof(color));
- for(i=1;i<=node;i++) adj[i].clear();
- for(i=0;i<edge;i++)
- {
- cin>>p>>q;
- adj[p].push_back(q);
- adj[q].push_back(p);
- }
- flag = true;
- color[1] = 1;
- dfs(1);
- if(flag)
- {
- printf("Yes, bicolorable !\nSet 1:");
- for(i=1;i<=node;i++) if(color[i]==1) printf(" %d",i);
- printf("\nSet 2:");
- for(i=1;i<=node;i++) if(color[i]==2) printf(" %d",i);
- printf("\n");
- }
- else printf("No, not bicolorable !\n");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement