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 |
3 2 |
2 100 |
Source
#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 红藕香残玉簟秋,轻解罗裳,独上兰舟。的更多相关文章
- 【差分约束系统】【强连通分量缩点】【拓扑排序】【DAG最短路】CDOJ1638 红藕香残玉簟秋,轻解罗裳,独上兰舟。
题意: 给定n个点(点权未知)和m条信息:u的权值>=v的权值+w 求点权的极小解和极大解(无解则输出-1) 极小解即每个点的点权可能的最小值 极大解即每个点的点权可能的最大值 题解: 差分约束 ...
- HTML第二天学习笔记
今天看视频学习的第一个知识是HTML中的块元素<div>和行内元素<span>. <!doctype html> <html lang="en&qu ...
- 算法是什么我记不住,But i do it my way. 解一道滴滴出行秋招编程题。
只因在今日头条刷到一篇文章,我就这样伤害我自己,手贱. 刷头条看到一篇文章写的滴滴出行2017秋招编程题,后来发现原文在这里http://www.cnblogs.com/SHERO-Vae/p/588 ...
- win7系统下的飞秋发送文件失败问题
飞秋发送文件失败这个问题大多数是由防火墙引起的1.检查windows自带的防火墙设置,在左侧的"允许程序通过windows防火墙"查看飞秋是否存在,不存在则增加之,公网.专网都勾选 ...
- wireshake抓包,飞秋发送信息,python
http://wenku.baidu.com/link?url=Xze_JY8T15pqI9mBLRpTxWF2d6MP-32xb6UwuE6tsUmitRDheJe-Ju87WlDEDBGuI5MF ...
- uestc 1073 秋实大哥与线段树 Label:线段树
秋实大哥与线段树 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) “学习本无底, ...
- 利用WinPcap模拟网络包伪造飞秋闪屏报文
起因 不知道从什么时候开始,同事开始在飞秋上发闪屏振动了,后来变本加厉,成了每日一闪.老闪回去也比较麻烦,作为程序猿呢,有没有什么偷懒的办法呢?(同事负责用户体验,不大懂编程).然后尝试了以下思路: ...
- Swing做的非阻塞式仿飞秋聊天程序
采用Swing 布局 NIO非阻塞式仿飞秋聊天程序, 切换皮肤颜色什么的小功能以后慢慢做 启动主程序. 当用户打开主程序后自动获取局域网段IP可以在 设置 --> IP网段过滤, 拥有 JMF ...
- 针对局域网IM飞秋(feiq)的开发总结
先上代码了,通过java代码群发feiq消息: package com.triman.constant; import java.io.IOException; import java.io.Unsu ...
随机推荐
- 面试题思考:解释一下什么叫AOP(面向切面编程)
这种在运行时,动态地将代码切入到类的指定方法.指定位置上的编程思想就是面向切面的编程. AOP是Spring提供的关键特性之一.AOP即面向切面编程,是OOP编程的有效补充. 使用AOP技术,可以将一 ...
- ORA-00972: 标识符过长
若是拼接成的sql语句,请查找传递参数时字符型字段是否两边少了引号.
- std::thread(2)
个线程都有一个唯一的 ID 以识别不同的线程,std:thread 类有一个 get_id() 方法返回对应线程的唯一编号,你可以通过 std::this_thread 来访问当前线程实例,下面的例子 ...
- 【黑金原创教程】【Modelsim】【第五章】仿真就是人生
声明:本文为黑金动力社区(http://www.heijin.org)原创教程,如需转载请注明出处,谢谢! 黑金动力社区2013年原创教程连载计划: http://www.cnblogs.com/al ...
- Ubuntu 只能用guest登录的问题修复
方式1(推荐): 1.先进入guest登入 2.通过Ctrl+Alt+F1进入命令行窗口(注释:Ctrl+Alt+F1~F6进入终端命令行,Ctrl+Alt+F7是退出终端) 3.登录root,然后进 ...
- Web测试系列之测试方法
一.输入框 1.字符型输入框: (1)字符型输入框:英文全角.英文半角.数字.空或者空格.特殊字符“~!@#¥%……&*?[]{}”特别要注意单引号和&符号.禁止直接输入特殊字符 ...
- JavaWeb基于session和cookie的数据共享
在了解session和cookie技术之前,我们需要先了解一下什么是会话?会话可以简单理解为用户打开一个浏览器,点击多个超链接,访问服务器的多个web资源,然后关闭浏览器,整个过程称为一个会话.这样, ...
- Android实时推送
xmpp, mqtt Web socket 透傳消息
- Java23种设计模式学习笔记【目录总贴】
创建型模式:关注对象的创建过程 1.单例模式:保证一个类只有一个实例,并且提供一个访问该实例的全局访问点 主要: 饿汉式(线程安全,调用效率高,但是不能延时加载) 懒汉式(线程安全,调用效率不高,但 ...
- poj3233—Matrix Power Series
题目链接:http://poj.org/problem?id=3233 题目意思:给一个矩阵n*n的矩阵A和一个k,求一个式子 S = A + A2 + A3 + … + Ak. 这个需要用到等比数列 ...