题目大意:成语接龙,从第一个到最后一个点的最短路径
//选择建图的方式真的很重要,偷个懒,用dfs
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
struct Edge
{
int to,w,next;
} edges[1000000];
const int mn=1001;
int n,m,w[mn];
char s[100],a[mn][5],b[mn][5];//a记录前4个字母,b记录后4个字母
int vis[mn];//记录一条路径上的结点
int dis[mn];//记录距离
int head[mn];
void add(int i,int j)
{
edges[m].to=j;
edges[m].w=w[i];
edges[m].next=head[i];
head[i]=m++;
}
void dfs(int i)
{
for(int j=head[i]; ~j; j=edges[j].next)
{
int v=edges[j].to;
if(dis[v]>dis[i]+edges[j].w)
{
dis[v]=dis[i]+edges[j].w;
vis[v]=1;
dfs(v);
vis[v]=0;
}
}
}
int main()
{
while(~scanf("%d",&n