http://codeforces.com/problemset/problem/241/E

首先检测哪些点会出现在从起点到终点的路上,可以用dfs或者迭代,

然后,对于所有的边,设f为边起点,t为边终点,dp[i]为从起点出发到i点所必须花费的时间,则当dp[t]>dp[f]+2,也就是超出限制时,把dp[t]限制到dp[f]+2处,对于dp[f]>dp[t]+1,限制dp[f]到dp[t]+1处

因为这个图没有圈,所以如果存在满足题意的边权方案,那么每次使得一个点的dp值满足要求,n次之后一定全部满足要求,不再发生改动,如果不存在满足题意的边权方案,就会不断发生震荡,此时及时停止循环输出No即可

注意不在起点到终点路上的边全都为1

 #include <cstdio>
#include <cstring>
using namespace std;
const int maxn=1e3+;
const int maxm=5e3+;
const int inf=0x3fffffff;
int n,m;
int vis[maxn];
int e[maxm][];
int dp[maxn];
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<m;i++)scanf("%d%d",e[i],e[i]+);
vis[]=;vis[n]=;
bool fl=true;
while(fl){
fl=false;
for(int i=;i<m;i++){
int f=e[i][],t=e[i][];
if((vis[f]&)&&(vis[t]&)==){
vis[t]|=;fl=true;
}
if((vis[t]&)&&(vis[f]&)==){
vis[f]|=;fl=true;
}
}
}
fl=true;
int cnt=;
while(fl){
fl=false;
cnt++;
for(int i=;i<m;i++){
int f=e[i][],t=e[i][];
if(vis[f]==&&vis[t]==){
if(dp[t]>dp[f]+){
dp[t]=dp[f]+;
fl=true;
}
if(dp[f]>dp[t]-){
dp[f]=dp[t]-;
fl=true;
}
}
}
if(cnt>n&&fl){puts("No");return ;}
}
puts("Yes");
for(int i=;i<m;i++){
int f=e[i][],t=e[i][];
if(vis[f]==&&vis[t]==)printf("%d\n",dp[t]-dp[f]);
else puts("");
}
return ;
}

CF 241E flights 最短路,重复迭代直到稳定 难度:3的更多相关文章

  1. (中等) CF 576D Flights for Regular Customers (#319 Div1 D题),矩阵快速幂。

    In the country there are exactly n cities numbered with positive integers from 1 to n. In each city ...

  2. CodeForces - 241E Flights 题解

    题目大意: 有一个有向无环图,n个点m条边,所有边权为1或2,求一组使所有从1到n的路径长度相同的边权的方案. 思路: 设从1到i的最短路为dist[i],若有一条从x到y的边,则1<=dist ...

  3. CF Destroying Roads (最短路)

    Destroying Roads time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...

  4. CF 103E Buying Sets 最大权闭合子图,匹配 难度:4

    http://codeforces.com/problemset/problem/103/E 这道题首先一看就很像是最大权闭合子图,但是我们可以认为现在有两种点,数字和集合点,我们需要消除数字点的影响 ...

  5. 快速切题CF 158B taxi 构造 && 82A double cola 数学观察 难度:0

    实在太冷了今天 taxi :错误原因1 忽略了 1 1 1 1 和 1 2 1 这种情况,直接认为最多两组一车了 2 语句顺序错 double cola: 忘了减去n的序号1,即n-- B. Taxi ...

  6. 算法学习笔记(三) 最短路 Dijkstra 和 Floyd 算法

    图论中一个经典问题就是求最短路.最为基础和最为经典的算法莫过于 Dijkstra 和 Floyd 算法,一个是贪心算法,一个是动态规划.这也是算法中的两大经典代表.用一个简单图在纸上一步一步演算,也是 ...

  7. LoadRunner中Action的迭代次数的设置和运行场景中设置

    LoadRunner中Action的迭代次数的设置和运行场景中设置 LoadRunner是怎么重复迭代和怎么增加并发运行的呢? 另外,在参数化时,对于一次压力测试中均只能用一次的资源应该怎么参数化呢? ...

  8. loadrunner中并发数与迭代的区别

    你的理解的虚拟用户应该是 迭代次数 ,录制脚本时只会有1个虚拟用户,1个虚拟用户可以有多次 迭代,也就是 重复执行 Action里面的内容,在场景设置的时候,如果你说的10时在runtime-sett ...

  9. Lr中脚本的迭代次数和场景运行时间的关系

    Loadrunner中脚本的迭代次数和场景运行时间的关系 LR 的Vugen和controller中迭代是这样的: 当场景的持续时间为“运行至结束”时,以Vugen中设置的迭代次数为准 当场景的持续时 ...

随机推荐

  1. HTML字符实体

    常用实体符号:

  2. 【转载】C++异常机制的学习

    参考了这篇文章:http://blog.chinaunix.net/uid-24517549-id-4079174.html 关于线程 进程和线程的概念相信各位看官早已耳熟能详.在这里,我只想带大家回 ...

  3. ListFragment

    ListFragment http://developer.android.com/reference/android/app/ListFragment.html extends Fragment C ...

  4. CSS3学习笔记之属性值

    font-family 设置文本的字体名称. font-style 设置文本样式. 取值 normal不使用斜体. italic使用斜体. oblique使用倾斜体. inherit从父元素继承. f ...

  5. git冲突的发生和解决/git workspace关于git的配置

    分支之间的冲突时如何产生的,前提是他们之间本来没有冲突,然后一个分支git add commit,另一个分支也git add commit,并且恰好是在同一个文件,于是冲突就产生了,冲突的解决有两种: ...

  6. 【转】实现RTP协议的H.264视频传输系统

    1.  引言       随着信息产业的发展,人们对信息资源的要求已经逐渐由文字和图片过渡到音频和视频,并越来越强调获取资源的实时性和互动性.但人们又面临着另外一种不可避免的尴尬,就是在网络上看到生动 ...

  7. struts2 token 使用说明

    使用token标签的时候,Struts2会建立一个GUID(全局唯一的字符串)放在session中,并且会成为一个hidden放在form中. token拦截器会判断客户端form提交的token和s ...

  8. js中tagName和nodeName

    DOM里常见的三种节点类型(总共有12种,如docment):元素节点,属性节点以及文本节点,例如<h2 class="title">head</h2>,其 ...

  9. lucene Lock obtain timed out: Lock@

    出错界面: 解决办法: 出现以上异常主要有两种原因: 1.系统正在写索引未完成之前,应用程序关闭 解决方法:删除提示的lock文件后重启应用(最好在应用中捕捉到,自动删除) 2.系统中有多个线程或程序 ...

  10. target标签对于优化用户体验的作用

    最近开始关注target="_blank"标签,是源于对咨询区的采纳工作.帖子内容页是在原页面加载,这样问题就来了,每采纳完一个问题,必须得后退好几次才可以,很不方便.后来按ctr ...