题意是:,往这个图中的点放置频率,总共有三种频率,如果这两个点连通,并且频率一样,则与题目不符,反之任意两个连通的点频率都要不一样;
思路:dfs暴力枚举
#include<bits/stdc++.h>
using namespace std;
int mp[30][30];
int vis[30];
int n, m;
int dfs(int now)
{
for(int i = 0;i < now; i++)
{
if(mp[now][i]&&(vis[now] == vis[i]))//与now相邻的结点与now有相同的频率
return 0;
}
if(now == n - 1)//遍历结束
{
return 1;
}
for(int i = 1;i <= 3; i++)//选颜色
{
vis[now+1] = i;
if(dfs(now+1))
return 1;
}
return 0;
}
int main()
{
int t;
cin >> t;
while(t--)
{
memset(vis,0,sizeof(vis));
memset(mp,0,sizeof(mp));
cin >> n >> m;
while(m--)
{
int a, b;
cin >> a >> b;
mp[a][b] = 1;
mp[b][a] = 1;
}
vis[0] = 1;//第一个节点任意选一种颜色
if(dfs(0))
{
cout <<"Y"<<endl;
}
else
{
cout <<"N"<<endl;
}
}
return 0;
}