地址: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的不省人事,别问我怎么知道的!
 #include <bits/stdc++.h>

 using namespace std;

 #define MP make_pair
#define PB push_back
typedef long long LL;
typedef pair<int,int> PII;
const double eps=1e-;
const double pi=acos(-1.0);
const int K=1e6+;
const int mod=1e9+; struct node
{
int to,v,next;
node(){}
node(int x,int y,int z){to=x,v=y,next=z;}
}eg1[*K],eg2[*K];
int t1,t2,hd1[K],hd2[K];
void add(int u,int v,int w,int op)
{
if(op&)
eg1[t1]=node(v,w,hd1[u]),hd1[u]=t1++;
else
eg2[t2]=node(v,w,hd2[u]),hd2[u]=t2++;
}
int n,m,cnt[K],inque[K],mx[K],mi[K],Q[K];
bool spfa1(void)
{
int top=;
memset(mi,-,sizeof mi);
Q[top++]=,inque[]=,cnt[]=,mi[]=;
while(top)
{
int u=Q[--top];
inque[u]=;
for(int i=hd1[u];~i;i=eg1[i].next)
{
int v=eg1[i].to,w=eg1[i].v;
if(mi[v]<mi[u]+w)
{
mi[v]=mi[u]+w;
if(inque[v]) continue;
if(cnt[v]>n) return ;
Q[top++]=v,inque[v]=,cnt[v]++;
} }
}
return ;
}
bool spfa2(void)
{
int top=;
memset(inque,,sizeof inque);
memset(cnt,,sizeof cnt);
memset(mx,0x3f3f3f3f,sizeof mx);
Q[top++]=,inque[]=,cnt[]=,mx[]=;
while(top)
{
int u=Q[--top];
inque[u]=;
for(int i=hd2[u];~i;i=eg2[i].next)
{
int v=eg2[i].to,w=eg2[i].v;
if(mx[v]>mx[u]+w)
{
mx[v]=mx[u]+w;
if(inque[v]) continue;
if(cnt[v]>n) return ;
Q[top++]=v,inque[v]=,cnt[v]++;
}
}
}
for(int i=;i<=n;i++)
if(min(mi[i],mx[i])<||max(mx[i],mi[i])>)
return ;
return ;
}
int main(void)
{
memset(hd1,-,sizeof hd1);
memset(hd2,-,sizeof hd2);
scanf("%d%d",&n,&m);
for(int i=,u,v,w;i<=m;i++)
scanf("%d%d%d",&u,&v,&w),add(v,u,w,),add(u,v,-w,);
for(int i=;i<=n;i++)
add(,i,,),add(,i,,);
if(spfa1()&&spfa2())
for(int i=;i<=n;i++)
printf("%d %d\n",mi[i],mx[i]);
else
printf("-1\n");
return ;
}

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

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

    题意: 给定n个点(点权未知)和m条信息:u的权值>=v的权值+w 求点权的极小解和极大解(无解则输出-1) 极小解即每个点的点权可能的最小值 极大解即每个点的点权可能的最大值 题解: 差分约束 ...

  2. HTML第二天学习笔记

    今天看视频学习的第一个知识是HTML中的块元素<div>和行内元素<span>. <!doctype html> <html lang="en&qu ...

  3. 算法是什么我记不住,But i do it my way. 解一道滴滴出行秋招编程题。

    只因在今日头条刷到一篇文章,我就这样伤害我自己,手贱. 刷头条看到一篇文章写的滴滴出行2017秋招编程题,后来发现原文在这里http://www.cnblogs.com/SHERO-Vae/p/588 ...

  4. win7系统下的飞秋发送文件失败问题

    飞秋发送文件失败这个问题大多数是由防火墙引起的1.检查windows自带的防火墙设置,在左侧的"允许程序通过windows防火墙"查看飞秋是否存在,不存在则增加之,公网.专网都勾选 ...

  5. wireshake抓包,飞秋发送信息,python

    http://wenku.baidu.com/link?url=Xze_JY8T15pqI9mBLRpTxWF2d6MP-32xb6UwuE6tsUmitRDheJe-Ju87WlDEDBGuI5MF ...

  6. uestc 1073 秋实大哥与线段树 Label:线段树

    秋实大哥与线段树 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) “学习本无底, ...

  7. 利用WinPcap模拟网络包伪造飞秋闪屏报文

    起因 不知道从什么时候开始,同事开始在飞秋上发闪屏振动了,后来变本加厉,成了每日一闪.老闪回去也比较麻烦,作为程序猿呢,有没有什么偷懒的办法呢?(同事负责用户体验,不大懂编程).然后尝试了以下思路: ...

  8. Swing做的非阻塞式仿飞秋聊天程序

    采用Swing 布局 NIO非阻塞式仿飞秋聊天程序, 切换皮肤颜色什么的小功能以后慢慢做 启动主程序. 当用户打开主程序后自动获取局域网段IP可以在 设置 --> IP网段过滤, 拥有 JMF ...

  9. 针对局域网IM飞秋(feiq)的开发总结

    先上代码了,通过java代码群发feiq消息: package com.triman.constant; import java.io.IOException; import java.io.Unsu ...

随机推荐

  1. Mysql命令行添加用户并且给予远程访问服务器的权限

    --查询用户SELECT User, Password, Host FROM user; --创建一个用户,任意主机可以登录%,密码是123456 '; -- 给用户赋予所有权限 GRANT ALL ...

  2. error C2678: 二进制“+”: 没有找到接受“const char [22]”类型的左操作数的运算符(或没有可接受的转换)没有与这些操作数匹配的“+”运算符

    错误:没有与这些操作数匹配的“+”运算符,操作数类型为const char [20]+CString 分析原因:其提示操作数类型为const char [20]+CString 可见是类型有问题 故加 ...

  3. NestedScrollView,RecyclerView

    为什么把它们放一起呢, 是因为它有着相同的特点 在新版的support-v4兼容包里面有一个NestedScrollView控件,这个控件其实和普通的ScrollView并没有多大的区别,这个控件其实 ...

  4. 【BZOJ4598】[Sdoi2016]模式字符串 树分治+hash

    [BZOJ4598][Sdoi2016]模式字符串 Description 给出n个结点的树结构T,其中每一个结点上有一个字符,这里我们所说的字符只考虑大写字母A到Z,再给出长度为m的模式串s,其中每 ...

  5. Leetcode-Bianry Tree Maximum Path Sum

    Given a binary tree, find the maximum path sum. The path may start and end at any node in the tree. ...

  6. 联合约束 CONCAT()

    w SELECT 原理. SELECT * FROM wz WHERE CONCAT(wint,wchar) NOT IN (SELECT CONCAT(wint,wchar) FROM wa); S ...

  7. php 乘除法原理

    w $wdays = ceil(($wmaxutime-$wminutime)/(24*3600)); $wdays = ceil(($wmaxutime-$wminutime)/243600); 二 ...

  8. 剖析Docker文件系统:Aufs与Devicemapper

    http://www.infoq.com/cn/articles/analysis-of-docker-file-system-aufs-and-devicemapper Docker镜像 典型的Li ...

  9. 荣誉墙项目day26 django 项目路由配置

    项目路由配置文件包括:配置目录里的urls.py文件和各个app目录里的urls.py文件 1.include()——从项目主路由分配到各APP主路由 from django.conf.urls im ...

  10. 兼容ie的半透明背景颜色过滤器,会影响事件的触发.

    兼容ie的半透明背景颜色过滤器,会影响事件的触发.