题目描述

造一幢大楼是一项艰巨的工程,它是由n个子任务构成的,给它们分别编号1,2,…,n(5≤n≤1000)。由于对一些任务的起始条件有着严格的限制,所以每个任务的起始时间T1,T2,…,Tn并不是很容易确定的(但这些起始时间都是非负整数,因为它们必须在整个工程开始后启动)。例如:挖掘完成后,紧接着就要打地基;但是混凝土浇筑完成后,却要等待一段时间再去掉模板。

这种要求就可以用M(5≤m≤5000)个不等式表示,不等式形如Ti-Tj≤b代表i和j的起始时间必须满足的条件。每个不等式的右边都是一个常数b,这些常数可能不相同,但是它们都在区间(-100,100)内。

你的任务就是写一个程序,给定像上面那样的不等式,找出一种可能的起始时间序列T1,T2,…,Tn,或者判断问题无解。对于有解的情况,要使最早进行的那个任务和整个工程的起始时间相同,也就是说,T1,T2,…,Tn中至少有一个为0。

输入输出格式

输入格式:

第一行是用空格隔开的两个正整数n和m,下面的m行每行有三个用空格隔开的整数i,j,b对应着不等式Ti-Tj≤b。

输出格式:

如果有可行的方案,那么输出N行,每行都有一个非负整数且至少有一个为0,按顺序表示每个任务的起始时间。如果没有可行的方案,就输出信息“NO SOLUTION”。

输入输出样例

输入样例#1:

【样例输入1】
5 8
1 2 0
1 5 –1
2 5 1
3 1 5
4 1 4
4 3 –1
5 3 –1
5 4 –3
【样例输入2】
5 5
1 2 –3
1 5 –1
2 5 –1
5 1 –5
4 1 4
输出样例#1:

【样例输出1】
0
2
5
4
1
【样例输出2】
NO SOLUTIO
差分约束
spfa
#include<cstdio>
#include<cstring>
#include<algorithm> using namespace std;
int n,m;
struct node{
int next,v,w;
}edge[];
int head[];
int num;
void add_edge(int x,int y,int w)
{
edge[++num].next=head[x];edge[num].v=y;edge[num].w=w;head[x]=num;
}
int dis[];
bool vis[];
bool spfa(int x)
{
vis[x]=;
for(int i=head[x];i;i=edge[i].next)
{
int v=edge[i].v;
if(dis[v]>dis[x]+edge[i].w)
{
dis[v]=dis[x]+edge[i].w;
if(!vis[v])
{
if(!spfa(v)) return false;
}
else return false;
}
}
vis[x]=;
return true;
}
int main()
{
memset(dis,0x3f,sizeof dis);
scanf("%d%d",&n,&m);
int a,b,c;
for(int i=;i<=m;i++)
{
scanf("%d%d%d",&a,&b,&c);
add_edge(b,a,c);
}
for(int i=;i<=n;i++)add_edge(,i,);
dis[]=;
vis[]=;
if(!spfa())
{
puts("NO SOLUTION");return ;
}
int minn=0x7fffffff;
for(int i=;i<=n;i++)
{
minn=min(minn,dis[i]);
}
for(int i=;i<=n;i++)
printf("%d\n",dis[i]-minn);
return ;
}

luogu P1260 工程规划(luogu wa)don't know way的更多相关文章

  1. luogu P1260 工程规划

    题目描述 造一幢大楼是一项艰巨的工程,它是由n个子任务构成的,给它们分别编号1,2,…,n(5≤n≤1000).由于对一些任务的起始条件有着严格的限制,所以每个任务的起始时间T1,T2,…,Tn并不是 ...

  2. 2021.08.16 P1260 工程规划(差分约束)

    2021.08.16 P1260 工程规划(差分约束) 重点: 1.跑最短路是为了满足更多约束条件. P1260 工程规划 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 造 ...

  3. 洛谷—— P1260 工程规划

    https://www.luogu.org/problem/show?pid=1260 题目描述 造一幢大楼是一项艰巨的工程,它是由n个子任务构成的,给它们分别编号1,2,…,n(5≤n≤1000). ...

  4. 洛谷 P1260 工程规划(差分约束)

    题目描述 造一幢大楼是一项艰巨的工程,它是由n个子任务构成的,给它们分别编号1,2,…,n(5≤n≤1000).由于对一些任务的起始条件有着严格的限制,所以每个任务的起始时间T1,T2,…,Tn并不是 ...

  5. P1260 工程规划 (差分约束)

    题目链接 Solution 差分约束. 差分约束似乎精髓就两句话: 当我们把不等式整理成 \(d[a]+w<=d[b]\) 时,我们求最长路. 整理成 \(d[a]+w>=d[b]\) 时 ...

  6. 【Luogu P1168】【Luogu P1801&UVA 501】中位数&黑匣子(Black Box)——对顶堆相关

    Luogu P1168 Luogu P1801 UVA 501(洛谷Remote Judge) 前置知识:堆.优先队列STL的使用 对顶堆 是一种在线维护第\(k\)小的算法. 其实就是开两个堆,一个 ...

  7. Luogu 1962 斐波那契数列(矩阵,递推)

    Luogu 1962 斐波那契数列(矩阵,递推) Description 大家都知道,斐波那契数列是满足如下性质的一个数列: f(1) = 1 f(2) = 1 f(n) = f(n-1) + f(n ...

  8. Luogu 2756 飞行员配对方案问题(二分图最大匹配)

    Luogu 2756 飞行员配对方案问题(二分图最大匹配) Description 英国皇家空军从沦陷国征募了大量外籍飞行员.由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的2 名飞 ...

  9. luogu P1160 队列安排

    二次联通门 :luogu P1160 队列安排 /* luogu P1160 队列安排 链表 手动模拟一下就好了... */ #include <cstdio> #define Max 5 ...

随机推荐

  1. Spring---环境搭建与包介绍

    jar包下载路径 首先需要下载Spring框架 spring-framework-5.0.0.RELEASE-dist,官方地址为https://repo.spring.io/release/org/ ...

  2. LyaoutParameters作用

    当你想要动态生成布局的时候,那么就要用到这个参数了.因为那时候你在布局文件里面写的width和height都不起作用了. LinearLayout linearLayout = (LinearLayo ...

  3. Android stadio

    Android stadio 最近遇到大问题,就是主功能行.但是让它做库工程,他就不管用. 但是在eclipse里面就可以.

  4. loj2173 「FJOI2016」建筑师

    ref 真是道组合数学神题啊--第一次见第一类斯特林数-- #include <iostream> #include <cstdio> using namespace std; ...

  5. leetcode 【 Minimum Path Sum 】python 实现

    题目: Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right w ...

  6. [转载]在Robotium中使用ID

    原文地址:在Robotium中使用ID作者:逍遥云翳 在Robotium的API中不提供使用ID的方式. 如果我们想在Robotium中使用ID就需要自己通过ID来找到控件的实例,然后通过Roboti ...

  7. Python实现对百度云的文件上传

    环境准备 python3.6 PyCharm 2017.1.3 Windows环境 框架搭建 selenium3.6 安装方法: pip install selenium 实现步骤: 一.步骤分析 1 ...

  8. 动态生成的chosen实现模糊查询

    $('select', newTr).chosen({ width: '100%', search_contains: true }); //初始化复制行下拉框

  9. “取出数据表中第10条到第20条记录”的sql语句+selecttop用法

    1.首先,select top用法: 参考问题 select top n * from和select * from的区别 select * from table -- 取所有数据,返回无序集合 sel ...

  10. try 与catch的作用

    首先要清楚,如果没有try的话,出现异常会导致程序崩溃.而try则可以保证程序的正常运行下去,比如说: try{ int i = 1/0; }catch(Exception e){ e.printSt ...