城市交通
Time Limit:1000MS——Memory Limit:65536K
題目描述
有n個城市,編號1~n,有些城市之間有路相連,有些則沒有,有路則當然有一個距離。現在規定只能從編號小的城市到編號大的城市,問你從編號爲1的城市到編號爲n的城市之間的最短距離是多少?
輸入
先輸入一個n,表示城市數,n小於100。
下面的n行是一個n*n的鄰接矩陣map[i,j],其中map[i,j]=0表示城市i和城市j之間沒有路相連,否則爲兩者之間的距離。
輸出
輸出格式:一個數,表示最少要多少時間。
輸入數據保證可以從城市1飛到城市n。
樣例輸入
11
0 5 3 0 0 0 0 0 0 0 0
5 0 0 1 6 3 0 0 0 0 0
3 0 0 0 8 0 4 0 0 0 0
0 1 0 0 0 0 0 5 6 0 0
0 6 8 0 0 0 0 5 0 0 0
0 3 0 0 0 0 0 0 0 8 0
0 0 4 0 0 0 0 0 0 3 0
0 0 0 5 5 0 0 0 0 0 3
0 0 0 6 0 0 0 0 0 0 4
0 0 0 0 0 8 3 0 0 0 3
0 0 0 0 0 0 0 3 4 3 0
樣例輸出
13
解題思路
如果可以走的話,就選擇走或者不走。注意min函數不要打錯(血的教訓 )
AC完整程序
#include<stdio.h>
int min(int a,int b){
return a<b?a:b;
}
int main(){
int n,t,sum[100]={0};
scanf("%d",&n);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
scanf("%d",&t);
if(t>0){
if(sum[j]>0){
sum[j]=min(t+sum[i],sum[j]);
}
else sum[j]=t+sum[i];
}
}
}
printf("%d",sum[n]);
return 0;
}