链接:http://acm.fzu.edu.cn/problem.php?pid=2181
思路:乍一看以为是并查集,仔细想了下又找不到让函数结束的条件,所以就看了其他人的搜索大法
1 #include2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 typedef long long ll; 9 using namespace std;10 11 int map[2005][2005],vis[2005],p[2005],flag;12 int cas,n,m,k,a,b;13 14 void dfs(int s,int cur,int *p)15 {16 if(flag)17 return;18 if(cur>=k && map[p[0]][p[cur-1]])19 {20 flag=1;21 return;22 }23 for(int i=1;i<=n;i++)24 {25 if(map[s][i] && !vis[i])26 {27 vis[i]=1;28 p[cur]=i;29 dfs(i,cur+1,p);30 vis[i]=0;31 }32 }33 }34 35 36 int main()37 {38 39 scanf("%d",&cas);40 while(cas--)41 {42 flag=0; 43 memset(vis,0,sizeof(vis));44 memset(map,1,sizeof(map));45 scanf("%d %d %d",&n,&m,&k);46 for(int i=0;i n)52 {53 printf("What a Pity.\n");54 continue;55 }56 57 for(int i=1;i