zoukankan      html  css  js  c++  java
  • POJ 3169 Layout

    两个关系好的牛之间不能超过一定的距离,两个关系不好的牛之间的距离不能少一定的距离。如果存在负还输出-1,牛1和牛N不连通 输出-2,否则输出他们的之间距离。

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<cstdlib>
     4 
     5 struct N
     6 {
     7     int u,v,w;
     8 } edge[20010];
     9 
    10 int dis[1010];
    11 int INF = (1<<29);
    12 
    13 int bellman_ford(int n,int e)
    14 {
    15     int flag;
    16     int i,j,k,u,v,w;
    17     for(i = 1;i < n; i++)
    18     {
    19         flag = 1;
    20         for(j = 0;j < e; j++)
    21         {
    22             u = edge[j].u;
    23             v = edge[j].v;
    24             w = edge[j].w;
    25             if(dis[u] + w < dis[v])
    26             {
    27                 dis[v] = dis[u] + w;
    28                 flag = 0;
    29             }
    30         }
    31         if(flag) break;
    32     }
    33     for(j = 0;j < e; j++)
    34     {
    35          u = edge[j].u;
    36             v = edge[j].v;
    37             w = edge[j].w;
    38             if( dis[u] + w < dis[v])
    39             {
    40                 return 1;
    41             }
    42     }
    43     return 0;
    44 }
    45 
    46 int main()
    47 {
    48     int n,m,l,i,e,u,v,w;
    49    scanf("%d %d %d",&n,&m,&l);
    50     
    51         for(i = 1; i <= n; i++)
    52         {
    53             dis[i] = INF;
    54         }
    55         dis[1] = 0;
    56         for(e = 0, i = 0; i < m; i++)
    57         {
    58             scanf("%d %d %d",&u,&v,&w);
    59             edge[e].u = u;
    60             edge[e].v = v;
    61             edge[e].w = w;
    62             e++;
    63         }
    64         for(i = 0; i < l; i++)
    65         {
    66             scanf("%d %d %d",&u,&v,&w);
    67             edge[e].u = v;
    68             edge[e].v = u;
    69             edge[e].w = -w;
    70             e++;
    71         }
    72 
    73    
    74 
    75         if(bellman_ford(n,e))
    76             printf("-1\n");
    77         else
    78         {
    79             if(dis[n] == INF)
    80                 printf("-2\n");
    81             else printf("%d\n",dis[n]);
    82         }
    83     
    84     
    85     return 0;
    86 }
  • 相关阅读:
    电脑桌面图标不显示图案变成白色图标该怎么办?
    行动上的巨人养成指南
    荣耀MagicBook Pro 2020款对比2019款做了哪些升级
    P8 function template ,函数模板
    MATLAB中imfill()函数
    MagicBook Pro 2020锐龙版
    P7. class template, 类模板,模板类
    6. namespace经验谈
    macbook pro2020参数
    MATLAB取整
  • 原文地址:https://www.cnblogs.com/zmx354/p/3041189.html
Copyright © 2011-2022 走看看