Hint:ICPC 2017 Japan Tsukuba
题意:有n个卫星,要给它们分配频率。有p个关系,表示卫星u和卫星v是相邻的。要求相邻的卫星不可以有相同的频率。频率一共具有三种。
做法:给每个卫星试着分配频率i,如果当前卫星与它相邻的卫星频率不同,则分配这个频率,如果是不相邻的卫星,也可以分配这个频率。暴力搜一遍即可。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod = 1e9+7;
const double PI = 4*atan(1.0);
const int maxm = 2e5+5;
const int maxn = 1e5+5;
const int INF = 0x3f3f3f3f;
int mmap[55][55];
int vis[55];
int n,m;
bool dfs(int now)
{
for(int i=0;i<now;i++)
{
if(mmap[i][now] && vis[now] == vis[i]) return false;
}
if(now == n-1) return true;
for(int i=0;i<3;i++)
{
vis[now+1] = i;
if(dfs(now+1)) return true;
}
return false;
}
int main()
{
#ifdef LOCAL_FILE
freopen("in.txt","r",stdin);
#endif // LOCAL_FILE;
ios_base::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
int t;
cin>>t;
while(t--)
{
memset(mmap,0,sizeof(mmap));
memset(vis,0,sizeof(vis));
cin>>n>>m;
for(int i=0;i<m;i++)
{
int u,v;
cin>>u>>v;
mmap[u][v] = mmap[v][u] = 1;
}
if(dfs(0)) cout<<"Y"<<endl;
else cout<<"N"<<endl;
}
return 0;
}