10004 - Bicoloring

Bicoloring

DFS solution



#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;
}



SHARE

Amit Ghosh

    Blogger Comment
    Facebook Comment

0 comments :

Post a Comment