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 之间的整数。

1≤n≤1000001≤n≤100000,1≤m≤10000001≤m≤1000000,1≤u1≤u 、v≤nv≤n,0≤w≤1000≤w≤100 。

Output

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

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

Sample input and output

Sample Input Sample 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\n",mi[i],mx[i]);
93     else
94         printf("-1\n");
95     return 0;
96 }
时间: 2024-10-09 23:30:51

cdoj1638 红藕香残玉簟秋,轻解罗裳,独上兰舟。的相关文章

【差分约束系统】【强连通分量缩点】【拓扑排序】【DAG最短路】CDOJ1638 红藕香残玉簟秋,轻解罗裳,独上兰舟。

题意: 给定n个点(点权未知)和m条信息:u的权值>=v的权值+w 求点权的极小解和极大解(无解则输出-1) 极小解即每个点的点权可能的最小值 极大解即每个点的点权可能的最大值 题解: 差分约束系统 对于val[u]>=val[v]+w 要得到极小解,v是没有受限制的,其最小值为0 而u受到v的限制,显然,val[u]的最小值就是val[v]+w 在多条件限制下,我们用v连向u边权为w的边表示每个限制条件val[u]>=val[v]+w 那么如果得到的是拓扑图,则按拓扑序求到每个点的最长

最美的宋词

<蝶恋花> 苏轼 花腿残红青杏小, 燕子飞时,绿水人家绕. 枝上柳绵吹多少,天涯何处无芳草. 墙里秋千墙外道. 墙外行人,墙里佳人笑. 笑渐不闻声渐悄,多情却被无情恼. <渔家傲> 王安石 平岸小桥千嶂抱, 桑蓝一水萦花草. 茅屋数间窗窈窕. 尘不到,时时自有春风扫. 午枕觉来闻语鸟, 欹眠似听朝鸡早. 忽忆故人今总老. 贪梦好,茫然忘了邯郸道. <如梦令> 秦观 莺嘴啄花红溜, 燕尾点波绿皱. 指冷玉笙寒, 吹彻小梅春透. 依旧,依旧, 人与绿杨俱瘦. <浣溪沙

古诗词里,从初识到相爱到分离到重逢的漫长过程

文/张佳玮 开始还不认识,远远看见,就跑过去追.可是隔着水,千回百绕,都近不了身: 蒹葭苍苍,白露为霜.所谓伊人,在水一方.溯游从之,道阻且长.溯洄从之,宛在水中央. ——<诗经> 也可能是听个声音,就心里惦记上了.可是这份单相思,真能憋死人——可能人一辈子都不知道你想什么呢: 花褪残红青杏小.燕子飞时,绿水人家绕.枝上柳绵吹又少,天涯何处无芳草. 墙里秋千墙外道.墙外行人,墙里佳人笑.笑渐不闻声渐悄,多情却被无情恼. ——<蝶恋花>苏轼 这种心态很容易发展成不跟真人接触,而是跟哥

优美诗词

苏轼 <水调歌头·明月几时有> 丙辰中秋,欢饮达旦,大醉,作此篇,兼怀子由. 明月几时有?把酒问青天.不知天上宫阙,今夕是何年?我欲乘风归去,又恐琼楼玉宇,高处不胜寒.起舞弄清影,何似在人间? 转朱阁,低绮户,照无眠.不应有恨,何事长向别时圆?人有悲欢离合,月有阴晴圆缺,此事古难全.但愿人长久,千里共婵娟. <行香子·述怀> 清夜无尘.月色如银.酒斟时.须满十分.浮名浮利,虚苦劳神.叹隙中驹,石中火,梦中身. 虽抱文章,开口谁亲.且陶陶.乐尽天真.几时归去,作个闲人.对一张琴,一壶

秋游阳澄湖

<秋游阳澄湖> 澄湖浩渺激白浪, 白鹭低翔凫鸭荡. 涉水芭蕉暗自红, 烟渚沙汀残芦黄. 2015年11月20日,菊黄持螯的时节,因团队建设,同事们驱车西行,前往阳澄湖秋游.车抵水天一色的湖边后,换乘快艇,到达湖心岛的在水一方船舫,品茗尝蟹,食蔬饮汤.同事间谈笑风生,其乐融融.下午三时返沪.

利用哈希值封死飞秋等客户端软件

实验环境: AD:server2012 r2 测试客户端:xp server2012r2 因为没有2008r2的环境临时用2012r2 代替,其实都是一样的.测试客户端用server2012r2 测试啦跟win7一样的,同时也测试了一下xp 因为好多2008以后的自带策略在xp下是不被支持的.(很庆幸这个策略是被xp支持的) 由于没有飞秋软件.利用.EXE的yy安装程序测试,飞秋也只是一个.EXE的运行程序而已一样的操作步骤 一. 利用AD组策略软件限制策略. 在组策略对象里面新建一条策略 右键

天凉好个秋(连载九)

声明: 各位看官,非常抱歉,<天凉好个秋>连载系列之所以中断,实乃不得已.自从开头之后,就开始了创业,非常折腾.有人说,创业也是工作难道不休息?真的没时间了吗?此语不假,可是本人向来山野闲人性格.之前的八章都是工作的时候写的,那时候甲方单位,悠哉的很.不过就此中断此篇小说实在可惜,本人将会发扬吃苦耐劳精神继续革命. 2014年7月10日 天凉好个秋(连载九),布布扣,bubuko.com

岁月的秋

立秋至,凉风咋起,吹起些许思绪. 时间是个神奇的东西,小时候,觉得它一若小河,悠悠的流淌,很慢,很慢,常常期望秋日的降临,因为这是收获的季节.而如今,时间恍若大江,一直在奔腾呼啸,还未来得及感受夏日的酷暑,便以嗅到了秋日了凉风. 犹记得去年立秋,自己刚步出校门,意气风发,不可一世,挥毫泼墨,写下挥手别旧径,昂首踏新程,今时今日,语尽辞穷,堆字如山无妙句,更多的,是欲说还休.以一程换一种经历,以一种经历换一种懂得,一年的光阴,让我更深的理解了沉默是金. 小时候的秋,旧巷老人,黄叶黄狗,还有一群嬉戏

网易2017秋招编程题集合-牛客网

网易2017秋招编程题集合-牛客网 链接:https://www.nowcoder.com/questionTerminal/0147cbd790724bc9ae0b779aaf7c5b50来源:牛客网 如果一个数字序列逆置之后跟原序列是一样的就称这样的数字序列为回文序列.例如: {1, 2, 1}, {15, 78, 78, 15} , {112} 是回文序列, {1, 2, 2}, {15, 78, 87, 51} ,{112, 2, 11} 不是回文序列. 现在给出一个数字序列,允许使用一