题意
检查一幅图是否所有的相邻两点颜色都不一样。
代码
#include <bits/stdc++.h>
using namespace std;
const int N = 1e4 + 10;
typedef long long ll;
struct edge{
int u, v;
}arr[N];
int col[N];
int main(void)
{
int i, j, temp;
int n, m;
scanf("%d%d", &n, &m);
for (i = 1; i <= m; i++)
{
scanf("%d%d", &arr[i].u, &arr[i].v);
}
int q;
scanf("%d", &q);
while (q--)
{
set<int> se;
for (i = 0; i < n; i++)
{
scanf("%d", col+i);
se.insert(col[i]);
}
for (i = 1; i <= m; i++)
{
if (col[arr[i].u] == col[arr[i].v])
{
printf("No\n");
break;
}
}
if (i == m+1)
printf("%d-coloring\n", se.size());
}
}
本文介绍了一种用于检查图中所有相邻节点颜色是否不同的算法。通过读取节点数量、边的数量及边连接的节点,再输入各节点的颜色,该算法能够判断图是否满足每两个相连节点颜色不同的条件,并输出结果。
5772

被折叠的 条评论
为什么被折叠?



