Dijkstra 带输出路径,邻接表存图。。。以前写的代码。
int a[1000001],b[1000001],c[1000001];
int first[1000001],next1[1000001];
int g[1001];
int f[1001];
bool bo[1001];
int main()
{
// for (int i=0;i<1000000;i++)
// next1[i]=-1;
for (int i=1;i<=1000;i++)
f[i]=855993460;
int n,m;
cin>>n>>m;
for (int i=1;i<=m;i++)
{
cin>>a[i]>>b[i]>>c[i];
next1[i]=first[a[i]];
first[a[i]]=i;
}
int v=1;
f[v]=0;
for (int i=1;i<=n;i++)
{
for (int j=first[v];j!=0;j=next1[j])
if (f[v]+c[j]
g[b[j]]=v;
f[b[j]]=f[v]+c[j];
}
int minnum=855993460,minv;
for (int i=1;i<=n;i++)
if (f[i]
v=minv;
bo[v]=true;
}
cout<
int k=n;
stack
while (k!=0)
{
sta.push(k);
k=g[k];
}
cout<
while (!sta.empty())
{
cout<<"==>"<
}
// system("PAUSE");
return 0;
}
Floyd算法是是一种用于寻找给定的加权图中顶点间最短路径的算法。具体用法你看看这个就会了,很详细的http://www.cnblogs.com/twjcnblog/archive/2011/09/07/2170306.html