zoukankan      html  css  js  c++  java
  • bfs染色法判定二分图

    #include<iostream>
    #include<queue>
    #include<cstring>
    #include<cstdio>
    using namespace std;
    int mapp[2005][2005],color[2005];
    int n,m,k;
    int bfs(int x)
    {
        color[x]=1;
        queue<int> que;
        que.push(x);
        while(!que.empty())
        {
            int now=que.front();
            que.pop();
            for(int i=1;i<=n;i++)
            {
                if(mapp[now][i]==1)
                {
                    if(color[i]==color[now])
                    {
                        return 0;
                    }
                    else
                        if(color[i]==0)
                        {
                            color[i]=-color[now];
                            que.push(i);
                        }
                }
            }
        }
        return 1;
    }
    int main()
    {
        int T,x,y,k,g=0;
        cin>>T;
        while(T--)
        {
            cin>>n>>m;
            memset(mapp,0,sizeof(mapp));
            memset(color,0,sizeof(color));
            for(int i=1;i<=m;i++)
            {
                cin>>x>>y;
                mapp[x][y]=1;
                mapp[y][x]=1;
            }
            for(int i=1;i<=n;i++)
            {
                if(color[i]==0)
                {
                    k=bfs(i);
                    if(k==0)
                        break;
                }
            }
            if(k==0)
            {
               cout<<"No"<<endl;
            }
            else
            {
                cout<<"Yes"<<endl;
            }
        }
    }
  • 相关阅读:
    Add Two Numbers
    Same Tree
    Single Number
    题目1190:大整数排序
    题目1182:统计单词
    题目1181:遍历链表
    题目1180:对称矩阵
    题目1179:阶乘
    题目1206:字符串连接
    HTML事件
  • 原文地址:https://www.cnblogs.com/Leozi/p/10834992.html
Copyright © 2011-2022 走看看