zoukankan      html  css  js  c++  java
  • CodeForces 20C

    这题有一点坑,用d[N]int的话会上溢 所以要用long long

     1 #include <iostream>
     2 #include <string.h>
     3 #include <queue>
     4 #include <vector>
     5 #include <utility>
     6 #include <cstdio>
     7 using namespace std;
     8 #define N 100005
     9 #define M 400005
    10 typedef long long LL;
    11 const LL inf = 1<<62;
    12 LL v[M],w[M],next[M],first[N],d[N],e;
    13 int f[N],o[N];
    14 bool inq[N];
    15 void addedge(int a,int b,int x){
    16     v[e]=b;
    17     w[e]=x;
    18     next[e]=first[a];
    19     first[a]=e++;
    20 }
    21 void SPFA(int st){
    22     queue<int> q;
    23     d[st]=0;
    24     q.push(st);
    25     inq[st]=1;
    26     f[1]=-1;
    27     while(!q.empty()){
    28         int u = q.front();
    29         q.pop();
    30         inq[u] = 0;
    31         for(int i=first[u];i!=-1;i=next[i]){
    32             if(d[v[i]]>d[u]+w[i]){
    33                 d[v[i]]=d[u]+w[i];
    34                 f[v[i]]=u;
    35                 if(!inq[v[i]]){
    36                     q.push(v[i]);
    37                     inq[v[i]]=1;
    38                 }
    39             }
    40         }
    41     }
    42 }
    43 int main(){
    44     int n,m,a,b,x;
    45    // freopen("test.txt","r",stdin);
    46     while(cin>>n>>m){
    47         e=0;
    48         for(int i=0;i<=n;i++){
    49             first[i]=-1;
    50             inq[i]=false;
    51             d[i]=inf;
    52         }
    53         for(int i=0;i<m;i++){
    54             cin>>a>>b>>x;
    55             addedge(a,b,x);
    56             addedge(b,a,x);
    57         }
    58         SPFA(1);
    59         if(d[n]==inf)cout<<"-1"<<endl;
    60         else {
    61             int r=0;
    62             for(int i=f[n];i!=-1;i=f[i]){
    63                 o[r]=i;
    64                 r++;
    65             }
    66             for(int i=r;i>0;i--){
    67                 printf("%d ",o[i-1]);
    68             }
    69             printf("%d
    ",n);
    70         }
    71     }
    72     return 0;
    73 }
  • 相关阅读:
    使用ab进行页面的压力测试
    apache http server2.2 + tomcat5.5 性能调优
    php Try Catch多层级异常测试
    用flask实现的添加后保留原url搜索条件
    会议室预定设计
    day4
    day3
    day2
    day1
    redis介绍以及安装
  • 原文地址:https://www.cnblogs.com/Mr-Xu-JH/p/3887016.html
Copyright © 2011-2022 走看看