void DFS(int now)
{
set[now]=1;
stack[++top]=now;
if(now==n) PrintPath();
for(int i=1;i<=n;++i)
if(set[i]==0&&Map[now][i]<INF)
DFS(i);
top--;
set[now]=0;
}
#include<stdio.h>
#include<string.h>
#define INF 1e5
int n,m;
int set[105];
int Map[105][105];
int stack[105],top;
void InitInfo()
{
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
Map[i][j]=INF;
memset(set,0,sizeof(set));
top=-1;
}
void CreateMap()
{
int a,b,w;
scanf("%d%d",&n,&m);
InitInfo();
for(int i=0;i<m;++i){
scanf("%d%d%d",&a,&b,&w);
Map[a][b]=Map[b][a]=w;
}
}
void PrintPath()
{
printf("%d",stack[0]);
for(int i=1;i<=top;++i)
printf("->%d",stack[i]);
printf("\n");
}
void DFS(int now)
{
set[now]=1;
stack[++top]=now;
if(now==n) PrintPath();
for(int i=1;i<=n;++i)
if(set[i]==0&&Map[now][i]<INF)
DFS(i);
top--;
set[now]=0;
}
int main()
{
CreateMap();
puts("Path:");
DFS(1);
return 0;
}
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/fd9be1f56e26426d456bb96e3cd414ed.jpeg)