zoukankan      html  css  js  c++  java
  • cdoj1638 红藕香残玉簟秋,轻解罗裳,独上兰舟。

    地址:http://acm.uestc.edu.cn/#/problem/show/1638

    题目:

    红藕香残玉簟秋,轻解罗裳,独上兰舟。

    Time Limit: 4000/2000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)

    考试结束后,为了证明自己才是最蒻的,同学们纷纷去找老师查分阅数—哦不—是查阅分数。

    可老师担心学生知道自己的成绩会伤心,于是只告诉学生这样的信息:

    编号为 uu 的学生分数比编号为 vv 的学生分数高 ww 分甚至更多。

    知道这些信息后,同学们想知道自己分数可能的 最小值 和 最大值 。不过老师记性不太好,给出的信息可能有误。

    Input

    第一行两个整数 nn 和 mm,表示学生个数和老师给的信息数。

    接下来 mm 行每行三个整数 uu 、vv 和 ww,含义如上文所描述。

    学生从 11 到 nn 编号,学生的分数为 00 到 100100 之间的整数。

    1n1000001≤n≤100000,1m10000001≤m≤1000000,1u1≤u 、vnv≤n,0w1000≤w≤100 。

    Output

    若老师给出的信息有误,仅输出一行 1−1 。

    否则输出 nn 行,第 ii 行为以空格隔开的两个整数,分别表示编号为 ii 的学生的分数可能的 最小值 和 最大值 。

    Sample input and output

    Sample InputSample Output
    2 2
    1 2 1
    2 1 1
    -1
    3 2
    1 2 1
    2 3 1
    2 100
    1 99
    0 98

    Source

    2017 UESTC Training for Graph Theory
     
    思路:
      差分约束。
      求最大值,跑最短路,建一条从v到u权值为w的边。
      求最小值,跑最长路,建一条从u到v权值为-w的边。
      别用vector存边,会T的不省人事,别问我怎么知道的!
     1 #include <bits/stdc++.h>
     2 
     3 using namespace std;
     4 
     5 #define MP make_pair
     6 #define PB push_back
     7 typedef long long LL;
     8 typedef pair<int,int> PII;
     9 const double eps=1e-8;
    10 const double pi=acos(-1.0);
    11 const int K=1e6+7;
    12 const int mod=1e9+7;
    13 
    14 struct node
    15 {
    16     int to,v,next;
    17     node(){}
    18     node(int x,int y,int z){to=x,v=y,next=z;}
    19 }eg1[2*K],eg2[2*K];
    20 int t1,t2,hd1[K],hd2[K];
    21 void add(int u,int v,int w,int op)
    22 {
    23     if(op&1)
    24         eg1[t1]=node(v,w,hd1[u]),hd1[u]=t1++;
    25     else
    26         eg2[t2]=node(v,w,hd2[u]),hd2[u]=t2++;
    27 }
    28 int n,m,cnt[K],inque[K],mx[K],mi[K],Q[K];
    29 bool spfa1(void)
    30 {
    31     int top=0;
    32     memset(mi,-1,sizeof mi);
    33     Q[top++]=0,inque[0]=1,cnt[0]=1,mi[0]=0;
    34     while(top)
    35     {
    36         int u=Q[--top];
    37         inque[u]=0;
    38         for(int i=hd1[u];~i;i=eg1[i].next)
    39         {
    40             int v=eg1[i].to,w=eg1[i].v;
    41             if(mi[v]<mi[u]+w)
    42             {
    43                 mi[v]=mi[u]+w;
    44                 if(inque[v]) continue;
    45                 if(cnt[v]>n) return 0;
    46                 Q[top++]=v,inque[v]=1,cnt[v]++;
    47             }
    48 
    49         }
    50     }
    51     return 1;
    52 }
    53 bool spfa2(void)
    54 {
    55     int top=0;
    56     memset(inque,0,sizeof inque);
    57     memset(cnt,0,sizeof cnt);
    58     memset(mx,0x3f3f3f3f,sizeof mx);
    59     Q[top++]=0,inque[0]=1,cnt[0]=1,mx[0]=100;
    60     while(top)
    61     {
    62         int u=Q[--top];
    63         inque[u]=0;
    64         for(int i=hd2[u];~i;i=eg2[i].next)
    65         {
    66             int v=eg2[i].to,w=eg2[i].v;
    67             if(mx[v]>mx[u]+w)
    68             {
    69                  mx[v]=mx[u]+w;
    70                 if(inque[v]) continue;
    71                 if(cnt[v]>n) return 0;
    72                 Q[top++]=v,inque[v]=1,cnt[v]++;
    73             }
    74         }
    75     }
    76     for(int i=1;i<=n;i++)
    77     if(min(mi[i],mx[i])<0||max(mx[i],mi[i])>100)
    78         return 0;
    79     return 1;
    80 }
    81 int main(void)
    82 {
    83     memset(hd1,-1,sizeof hd1);
    84     memset(hd2,-1,sizeof hd2);
    85     scanf("%d%d",&n,&m);
    86     for(int i=1,u,v,w;i<=m;i++)
    87         scanf("%d%d%d",&u,&v,&w),add(v,u,w,1),add(u,v,-w,2);
    88     for(int i=1;i<=n;i++)
    89         add(0,i,0,1),add(0,i,0,2);
    90     if(spfa1()&&spfa2())
    91         for(int i=1;i<=n;i++)
    92             printf("%d %d
    ",mi[i],mx[i]);
    93     else
    94         printf("-1
    ");
    95     return 0;
    96 }
  • 相关阅读:
    js 符号
    Flexbox的一些东西,再看看这里面的一些文章,基本上能解决相关问题
    使用initial-letter实现首字下沉效果,感兴趣的同学欢迎猛击:
    特效网址2
    特效网址
    CSS Icon 项目地址 小图标-用css写成的
    【SSH进阶之路】一步步重构容器实现Spring框架——配置文件+反射实现IoC容器(十)
    【SSH进阶之路】一步步重构容器实现Spring框架——解决容器对组件的“侵入式”管理的两种方案--主动查找和控制反转(九)
    【SSH进阶之路】一步步重构容器实现Spring框架——从一个简单的容器开始(八)
    从今天起,写一本关于LLVM的书----《深入理解LLVM》
  • 原文地址:https://www.cnblogs.com/weeping/p/6973419.html
Copyright © 2011-2022 走看看