zoukankan      html  css  js  c++  java
  • Bicoloring 二分图+染色

    https://vjudge.net/contest/281085?tdsourcetag=s_pcqq_aiomsg#problem/B

     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<math.h>
     4 #include<iostream>
     5 #include<stdlib.h>
     6 #include<algorithm>
     7 #include<queue>
     8 #include<vector>
     9 #include<string>
    10 #include<set>
    11 #include<cctype>
    12 #include<sstream>
    13 #define mem(a) memset(a,0,sizeof(a))
    14 #define LL long long
    15 #define inf 0x3f3f3f3f
    16 using namespace std;
    17 const int N=1e3+5;
    18 int color[N],link[N][N];
    19 int n,m;
    20 bool dfs(int v,int c)
    21 {
    22   color[v]=c;
    23   for(int i=0;i<n;i++)
    24   {
    25       if(link[v][i]) //查找所有邻近的
    26       {
    27           if(color[i]==c) 
    28           return false;
    29           if(color[i]==0&&!dfs(i,-c))
    30           return false;
    31       }
    32   }
    33   return true;
    34 }
    35 void solve()
    36 {
    37    for(int i=0;i<n;i++)
    38    {
    39       if(color[i]==0)
    40       {
    41           if(!dfs(i,1))
    42          {
    43              printf("NOT BICOLORABLE.
    ");return;
    44          }
    45       }
    46    }
    47    printf("BICOLORABLE.
    ");//return;
    48 }
    49 int main()
    50 {
    51     int a,b;
    52   while(~scanf("%d",&n)&&n)
    53   {
    54      mem(color);
    55      mem(link);
    56      scanf("%d",&m);
    57      for(int i=0;i<m;i++)
    58      {
    59          scanf("%d %d",&a,&b);
    60          link[a][b]=1; //注意双向
    61          link[b][a]=1;
    62      }
    63     solve();
    64   }
    65   return 0;
    66 }
    View Code
  • 相关阅读:
    单链表反转
    C++面试题
    堆排序
    1链表:回文链表(leetcode 234)
    深信服社招linux岗面试记录
    腾讯后台开发社招记录(电话面试)
    小米社招ATE岗位记录
    诺基亚社招C++面试记录
    腾讯后台开发社招面试记录
    makefile笔记
  • 原文地址:https://www.cnblogs.com/XXrll/p/10322887.html
Copyright © 2011-2022 走看看