PAT 1154 甲级
这道题的坑点是某些散点的颜色会与其他连通的点不同,所以需要在输入的时候就用set容器来装颜色,否则会有一个点出错
#include<cstdio>
#include<cstring>
#include<set>
using namespace std;
struct edge{
int a,b;
}e[10010];
int n,m,k,color[10010];
int main()
{
scanf("%d%d",&n,&m);
for(int i=0;i<m;i++) scanf("%d%d",&e[i].a,&e[i].b);
scanf("%d",&k);
while(k--)
{
set<int> colortype;
bool flag=false;
for(int i=0;i<n;i++)
{
scanf("%d",&color[i]);
colortype.insert(color[i]);
}
for(int i=0;i<m;i++)
{
int a=e[i].a,b=e[i].b;
if(color[a]==color[b])
{
flag=true;
break;
}
}
if(flag) printf("No\n");
else printf("%d-coloring\n",colortype.size());
}
return 0;
}

浙公网安备 33010602011771号