我不理解为什么写dijkska就WA呢?
atoi()是个好东西,给你个颜色,自己体会
疑惑!疑惑!疑惑!
1 #include <queue> 2 #include <cstdio> 3 #include <algorithm> 4 using namespace std; 5 const int INF=1e9,MAXN=105,MAXM=10010; 6 int w(){char s[15];scanf("%s",s);return s[0]==‘x‘?INF:atoi(s);} 7 struct edge{ 8 int v,w,next; 9 edge(int v=0,int w=0,int next=0):v(v),w(w),next(next){} 10 }; 11 edge E[MAXM];int head[MAXN],cnt; 12 void add(int u,int v,int w){ 13 E[++cnt]=edge(v,w,head[u]),head[u]=cnt; 14 E[++cnt]=edge(u,w,head[v]),head[v]=cnt; 15 } 16 int dis[MAXN],vis[MAXN],stack[MAXN],top; 17 int spfa(int s,int n){ 18 for(int i=1;i<=n;i++)vis[i]=0,dis[i]=INF; 19 top=0,stack[++top]=1,vis[s]=1,dis[s]=0; 20 for(int u;top>=0;){ 21 u=stack[top--],vis[u]=0; 22 for(int i=head[u],v,w;v=E[i].v,w=E[i].w,i;i=E[i].next) 23 if(dis[v]>dis[u]+w){ 24 dis[v]=dis[u]+w; 25 if(!vis[v])stack[++top]=v,vis[v]=1; 26 } 27 } 28 int ans=0; 29 for(int i=1;i<=n;i++)ans=max(ans,dis[i]); 30 return ans; 31 } 32 int main(){ 33 int n;scanf("%d",&n); 34 for(int i=2;i<=n;i++)for(int j=1;j<i;j++)add(i,j,w()); 35 printf("%d\n",spfa(1,n)); 36 return 0; 37 }
原文地址:https://www.cnblogs.com/JasonCow/p/12369492.html
时间: 2024-11-07 21:11:04