图着色问题 解题报告

图着色问题是一个著名的NP完全问题。给定无向图G=(V,E),问可否用K种颜色为V中的每一个顶点分配一种颜色,使得不会有两个相邻顶点具有同一种颜色?

但本题并不是要你解决这个着色问题,而是对给定的一种颜色分配,请你判断这是否是图着色问题的一个解。

输入格式:

输入在第一行给出3个整数V(0

输出格式:

对每种颜色分配方案,如果是图着色问题的一个解则输出Yes,否则输出No,每句占一行。

输入样例:

6 8 3
2 1
1 3
4 6
2 5
2 4
5 4
5 6
3 6
4
1 2 3 3 1 2
4 5 6 6 4 5
1 2 3 4 5 6
2 3 4 2 3 4

输出样例:

Yes
Yes
No
No

 题意:给你一个颜色方案,问是否可行。规则是相邻的颜色不能相同。

思路:一道简单的水题,走一遍图,判断即可。但是道理我们都懂,但为啥拿不到满分呢?这就是我整理这道题的的原因:审题。

仔细阅读这道题的题目和样例,你会发现不止是颜色>K,不符合,就连

下面给出AC代码:

 

#include 
#include 
#include 
#include 
using namespace std;
typedef long long ll;
const int INF=0x3f3f3f3f;
const int maxn=600+10;
int V,E,K,N;
bool cost[maxn][maxn];
bool used[maxn][maxn];
int a[maxn];
set ans;

bool judge()
{
     bool ok=true;
     for(int i=1;i<=V;i++)
     {
         for(int j=i+1;j<=V;j++)
         {
             if(cost[i][j]==true&&a[j]==a[i])
             {
                 ok=false;
                 break;
             }
         }
     }
     return ok;
}

int main()
{
    memset(cost,false,sizeof(cost));
    scanf("%d %d %d",&V,&E,&K);

    for(int i=0;i

 

你可能感兴趣的:(图论,天梯赛)