1261:【例9.5】城市交通路网

城市交通路网

 1 #include<iostream>
 2 #include<cstdio>
 3 using namespace std;
 4 const int N=105;
 5 int main(){
 6     int n,t=1,a[N][N],c[N],f[N];
 7     cin>>n;
 8     for(int i=1;i<=n;i++)
 9         for(int j=1;j<=n;j++)
10             cin>>a[i][j];
11     for(int i=1;i<n;i++)f[i]=N*N*N;
12     f[n]=0,c[n]=0;
13     for(int i=n-1;i>0;i--){
14         for(int j=i+1;j<=n;j++)
15             if(a[i][j]&&f[i]>a[i][j]+f[j]){
16                 f[i]=a[i][j]+f[j];
17                 c[i]=j;
18             }
19     }
20     printf("minlong=%d\n%d",f[1],1);
21     while(c[t]){
22         printf(" %d",c[t]);
23         t=c[t];
24     }
25     return 0;
26 }

说句实话,除了1之外的其他f[x]其实是不可靠的!

当然,题目好像有隐含条件,只能从小城市到大城市。

加上这个隐含条件,那么其他f[x]才是有效的。

posted @ 2021-08-14 16:11  Rekord  阅读(183)  评论(0编辑  收藏  举报