• poj 2983Is the Information Reliable?


    http://poj.org/problem?id=2983

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 #define maxm 5000100
     5 #define maxn 3010
     6 using namespace std;
     7 int head[maxn],next[maxn],dis[maxn];
     8 bool vis[maxn];
     9 int e,n,m;
    10 const int inf=1<<23;
    11 struct node
    12 {
    13     int u,v,c;
    14     node(){}
    15     node(int u,int v,int c):u(u),v(v),c(c){}
    16 }p[maxm];
    17 
    18 void addnode(int u,int v,int c)
    19 {
    20     p[e]=node(u,v,c);
    21     next[e]=head[u];head[u]=e++;
    22 }
    23 
    24 void inti()
    25 {
    26     memset(head,-1,sizeof(head));
    27     memset(next,-1,sizeof(next));
    28     e=0;
    29     for(int i=0; i<m; i++)
    30     {
    31         char ch;int u,v,c;
    32         scanf("%c",&ch);
    33         if(ch=='P')
    34         {
    35             scanf("%d%d%d",&u,&v,&c);
    36             getchar();
    37             addnode(u,v,-c);
    38             addnode(v,u,c);
    39         }
    40         else if(ch=='V')
    41         {
    42             scanf("%d%d",&u,&v);
    43             getchar();
    44             addnode(u,v,-1);
    45         }
    46     }
    47 }
    48 
    49 void  Bellman_ford()
    50 {
    51     bool flag;
    52     for(int i=0; i<=n; i++) dis[i]=inf;
    53     for(int i=1; i<=n; i++)
    54     {
    55         flag=true;
    56         for(int j=0; j<e; j++)
    57         {
    58             if(dis[p[j].v]>dis[p[j].u]+p[j].c)
    59             {
    60                 dis[p[j].v]=dis[p[j].u]+p[j].c;
    61                 flag=false;
    62             }
    63         }
    64         if(flag) break;
    65     }
    66     if(!flag) printf("Unreliable
    ");
    67     else printf("Reliable
    ");
    68 }
    69 
    70 int main()
    71 {
    72     while(scanf("%d%d",&n,&m)!=EOF)
    73     {
    74         getchar();
    75         inti();
    76         Bellman_ford();
    77     }
    78     return 0;
    79 }
    View Code
     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 #define maxm 500010
     5 #define maxn 3010
     6 using namespace std;
     7 int head[maxn],next[maxn],dis[maxn];
     8 bool vis[maxn];
     9 int e,n,m;
    10 const int inf=1<<30;
    11 struct node
    12 {
    13     int u,v,c;
    14     node(){}
    15     node(int u,int v,int c):u(u),v(v),c(c){}
    16 }p[maxm];
    17 
    18 void addnode(int u,int v,int c)
    19 {
    20     p[e]=node(u,v,c);
    21     next[e]=head[u];head[u]=e++;
    22 }
    23 
    24 void inti()
    25 {
    26     memset(head,-1,sizeof(head));
    27     memset(next,-1,sizeof(next));
    28     e=0;
    29     for(int i=0; i<m; i++)
    30     {
    31         char ch;
    32         int u,v,c;
    33         scanf("%c",&ch);
    34         if(ch=='P')
    35         {
    36             scanf("%d%d%d",&u,&v,&c);
    37             getchar();
    38             addnode(u,v,-c);
    39             addnode(v,u,c);
    40         }
    41         else if(ch=='V')
    42         {
    43             scanf("%d%d",&u,&v);
    44             getchar();
    45             addnode(u,v,-1);
    46         }
    47     }
    48 }
    49 
    50 void  Bellman_ford()
    51 {
    52     bool flag;
    53     for(int i=0; i<=n; i++) dis[i]=inf;
    54     for(int i=1; i<=n; i++)
    55     {
    56         for(int j=0; j<e; j++)
    57         {
    58             if(dis[p[j].v]>dis[p[j].u]+p[j].c)
    59             {
    60                 dis[p[j].v]=dis[p[j].u]+p[j].c;
    61             }
    62         }
    63     }
    64     flag=true;
    65     for(int j=0; j<e; j++)
    66     {
    67         if(dis[p[j].v]>dis[p[j].u]+p[j].c)
    68         {
    69             flag=false;
    70             break;
    71         }
    72     }
    73     if(!flag) printf("Unreliable
    ");
    74     else printf("Reliable
    ");
    75 }
    76 
    77 int main()
    78 {
    79     while(scanf("%d%d",&n,&m)!=EOF)
    80     {
    81         getchar();
    82         inti();
    83         Bellman_ford();
    84     }
    85     return 0;
    86 }
    View Code
  • 相关阅读:
    个人知识库建设:搜集、归类、整理、提纯
    vue学习:定义全局变量并使用
    flask学习:配置https请求
    flask项目部署到云服务器,并通过域名访问后端服务
    微信小程序开发学习系列
    shell数组
    RabbitMQ安装与基本原理
    bootstrap强化模态窗口插件
    多选框插件
    2022全国卷乙卷文科数学解析版|图片
  • 原文地址:https://www.cnblogs.com/fanminghui/p/3440279.html
Copyright © 2020-2023  润新知