标签:
问题描述
输入
输出
样例输入
5 50 30 5 100 20 50 10 x x 10
样例输出
35
起点为1,求它连通全图,最少要用的时间!
atoi()函数
原型:int atoi (const char *nptr)
用法:#include <stdlib.h>
功能:返回转换后的整型数。
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <algorithm> 5 using namespace std; 6 const int inf=1<<29; 7 const int N=110; 8 int u,v,n,b; 9 char c[N]; 10 int w[N][N],d[N],vis[N]; 11 void dij() 12 { 13 for(int i=1;i<=n;i++) 14 { 15 d[i]=inf; 16 } 17 d[1]=0; 18 for(int i=1;i<=n;i++) 19 { 20 int now=inf; 21 int x; 22 for(int j=1;j<=n;j++) 23 { 24 if(!vis[j]&&now>d[j]) 25 { 26 now=d[j]; 27 x=j; 28 } 29 } 30 vis[x]=1; 31 for(int j=1;j<=n;j++) 32 { 33 if(!vis[j]&&d[j]>d[x]+w[x][j]) 34 { 35 d[j]=d[x]+w[x][j]; 36 } 37 } 38 } 39 } 40 int main() 41 { 42 while(scanf("%d",&n)!=EOF) 43 { 44 memset(vis,0,sizeof(vis)); 45 for(int i=1; i<=n; i++) 46 { 47 for(int j=1; j<=n; j++) 48 { 49 w[i][j]=inf; 50 } 51 } 52 for(int i=2; i<=n; i++) 53 { 54 for(int j=1; j<i; j++) 55 { 56 scanf("%s",c);//输入全部为字符串型 57 if(strcmp(c,"x")!=0)//比较字符串相等 58 { 59 b=atoi(c);//把字符串转成整型数 60 if(b<w[i][j]) 61 { 62 w[i][j]=b; 63 w[j][i]=b; 64 } 65 } 66 } 67 } 68 dij(); 69 int mi=-inf; 70 for(int i=2;i<=n;i++)//由起点同时出发,离它最远的那个点的最小权值就是它至少要用的时间 71 { 72 if(d[i]>mi) 73 mi=d[i]; 74 } 75 printf("%d\n",mi); 76 } 77 return 0; 78 }
标签:
原文地址:http://www.cnblogs.com/tianmin123/p/4791647.html