Bicoloring
#include<bits/stdc++.h>
using namespace std;
vector<int>g[401];
int visited[1000];
int color[1000];
int n,l,u,v;
bool DFS(int src)
{
visited[src]=1;
for(int i=0;i<g[src].size();i++)
{
if(visited[g[src][i]]==0)
{
/*if(color[src]==0) color[g[src][i]]=1;
else
*/
color[g[src][i]]=color[src]^1;
visited[g[src][i]]=1;
DFS(g[src][i]);
}
if(color[g[src][i]]==color[src]) return false;
}
return true;
}
int main()
{
while(1)
{
cin>>n;
if(n==0) break;
cin>>l;
for(int i=0;i<l;i++)
{
cin>>u>>v;
g[u].push_back(v);
g[v].push_back(u);
}
if(DFS(0)==false)
cout<<"NOT BICOLORABLE.";
else cout<<"BICOLORABLE.";
cout<<endl;
memset(visited,0,sizeof(visited));
memset(color,0,sizeof(color));
for(int i=0;i<200;i++)
g[i].clear();
}
return 0;
}
-
Blogger Comment
-
Facebook Comment
Subscribe to:
Post Comments
(
Atom
)
0 comments :
Post a Comment