zoukankan      html  css  js  c++  java
  • C++-POJ1502-MPI Maelstrom-[最短路][spfa][栈优化]

    我不理解为什么写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
    ",spfa(1,n));
    36     return 0;
    37 } 
    ~~Jason_liu O(∩_∩)O
  • 相关阅读:
    结对编程第一次作业
    软件工程第三次作业
    软件工程第二次作业
    软件工程第一次作业
    第五次作业(结对第2次)
    第四次作业
    第三次作业
    第二次作业(多图预警)
    第一次作业
    软工第四次作业——结对编程二
  • 原文地址:https://www.cnblogs.com/JasonCow/p/12369492.html
Copyright © 2011-2022 走看看