题意:有n座城市,之间有m条路,每条路连接其中的两座城市,佳佳从其中一座城市出发,经过所有的m条路一次且仅一次,最后回到出发的那座城市。佳佳想知道这个旅行计划能否实现。
思路:深搜判定图连通+欧拉回路判定
#include "string.h"
#include "stdio.h"
#define M 25
int a[M][M];
int visit[M];
int count,n;
int DFS (int x);
int main ()
{
int m,i,j,k;
while (scanf ("%d %d",&n,&m)!= EOF)
{
memset (a,0,sizeof(a));
memset (visit,0,sizeof(visit));
count =0;
for (k = 0; k < m; k ++)
{
scanf ("%d %d",&i,&j);
a[i-1][j-1] = 1;
//有重边
}
if (n == 1)
printf ("Yes\n");
else
{
if (DFS (0))
printf ("Yes\n");
else
printf ("No\n");
}
}
}
int DFS (int x) //判定连通性
{
int i;
for (i = 0; i < n; i ++)
{
if (a[x][i]&&visit[i] == 0)
{
count ++;
visit[i] = 1;
DFS (i);
}
}
if (count==n)
return 1;
else
return 0;
}
代码写得有些恶心,呵呵~
思路:深搜判定图连通+欧拉回路判定
#include "string.h"
#include "stdio.h"
#define M 25
int a[M][M];
int visit[M];
int count,n;
int DFS (int x);
int main ()
{
}
int DFS (int x)
{
}
代码写得有些恶心,呵呵~