http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1660
问图中是否存在长度为k的环!暴搜就可以了!
#include<bits/stdc++.h>
using namespace std;
int n,m,k,x,y,flag;
vector<int>a[55];int vis[55];
void dfs(int now,int pos, int pre)
{
if(vis[now])
{
if(pos-vis[now]==k)
flag=1;return ;
}
if(flag) return ;
vis[now]=pos;
int len=a[now].size();
for(int i=0;i<len;i++)
{
if(a[now][i]!=pre)
{
dfs(a[now][i],pos+1,now);
}
}
return ;
}
int main()
{
int t ;
scanf("%d",&t);
while(t--)
{
flag=0;
for(int i=0;i<n;i++) a[i].clear();
memset(vis,0,sizeof(vis));
scanf("%d%d%d",&n,&m,&k);
for(int i=0;i<m;i++)
{
scanf("%d%d",&x,&y);
a[x].push_back(y);a[y].push_back(x);
}
for(int i=0;i<n;i++)
{
if(!vis[i])
{
dfs(i,1,-1);
}
}
if(flag) puts("YES");else puts("NO");
}
return 0;
}