洛谷P2136 拉近距离
题目背景
我是源点,你是终点。我们之间有负权环。 ——小明
题目描述
在小明和小红的生活中,有\(N\)个关键的节点。有\(M\)个事件,记为一个三元组\((S_i,T_i,W_i)\),表示从节点\(S_i\)有一个事件可以转移到\(T_i\),事件的效果就是使他们之间的距离减少\(W_i\)。
这些节点构成了一个网络,其中节点\(1\)和\(N\)是特殊的,节点\(1\)代表小明,节点\(N\)代表小红,其他代表进展的阶段。所有事件可以自由选择是否进行,但每次只能进行当前节点邻接的。请你帮他们写一个程序,计算出他们之间可能的最短距离。
输入输出格式
输入格式:
第\(1\)行,两个正整数\(N,M\).
之后\(M\)行,每行\(3\)个空格隔开的整数\(S_i,T_i,W_i\)。
输出格式:
一行,一个整数表示他们之间可能的最短距离。如果这个距离可以无限缩小,输出\(“Forever love”\)(不含引号)。
输入输出样例
输入样例#1:
3 3
1 2 3
2 3 -1
3 1 -10
输出样例#1:
-2
说明
对于\(20\%\)数据,\(N \leq 10,M \leq 50\)。
对于\(50\%\)数据,\(N \leq 300,M \leq 5000\)。
对于全部数据,\(N \leq 1000,M \leq 10000,|W_i| \leq 100\),保证从节点\(1\)到\(N\)有路径。
思路:题意就是让你在一张图上找一条从\(1\)号点到\(n\)号点的最短路径,如果这条路径可以无限缩小,那么就输出\(“Forever love”\),即存在负环,所以我们可以用\(spfa\)判断负环,如果一个点入队列超过\(n\)次,那么一定存在负环,这时直接输出\(“Forever love”\)并退出程序,然后spfa的过程中更新\(dis\)数组,即\(1\)号点到其它点的最短距离,然后这道题还有一个坑点就是距离不一定只有\(1\)号点能拉近,\(n\)号点也能,所以我们要用两遍\(spfa\),分别以\(1\)号点和\(n\)号点为起点,然后取两次\(dis[end]\)的最大值,其中\(end\)表示两次\(spfa\)的重点。
代码:
#include<cstdio>
#include<cctype>
#include<queue>
#include<cstring>
#include<algorithm>
#define maxn 1007
using namespace std;
int n,m,head[maxn],in[maxn],dis[maxn],num;
bool vis[maxn];
inline int qread() {
char c=getchar();int num=0,f=1;
for(;!isdigit(c);c=getchar()) if(c=='-') f=-1;
for(;isdigit(c);c=getchar()) num=num*10+c-'0';
return num*f;
}
struct node {
int v,w,nxt;
}e[20007];
inline void ct(int u, int v, int w) {
e[++num].v=v;
e[num].w=w;
e[num].nxt=head[u];
head[u]=num;
}
inline void spfa(int s) {
memset(dis,0x3f,sizeof(dis));
queue<int>q;
q.push(s);
dis[s]=0,in[s]=1,vis[s]=1;
while(!q.empty()) {
int u=q.front();q.pop();
vis[u]=0;
for(int i=head[u];i;i=e[i].nxt) {
int v=e[i].v;
if(dis[v]>dis[u]+e[i].w) {
dis[v]=dis[u]+e[i].w;
if(!vis[v]) {
q.push(v),vis[v]=1;
in[v]++;
if(in[v]>n) {printf("Forever love\n");exit(0);}
}
}
}
}
}
int main() {
n=qread(),m=qread();
for(int i=1,u,v,w;i<=m;++i) {
u=qread(),v=qread(),w=qread();
ct(u,v,-w);
}
spfa(1);int zrj=dis[n];
spfa(n);int cyh=dis[1];
printf("%d\n",min(zrj,cyh));
return 0;
}
洛谷P2136 拉近距离的更多相关文章
- 洛谷 P2136 拉近距离 题解
P2136 拉近距离 题目背景 我是源点,你是终点.我们之间有负权环. --小明 题目描述 在小明和小红的生活中,有N个关键的节点.有M个事件,记为一个三元组(Si,Ti,Wi),表示从节点Si有一个 ...
- P2136 拉近距离(spfa判负环)
洛谷—— P2136 拉近距离 题目背景 我是源点,你是终点.我们之间有负权环. ——小明 题目描述 在小明和小红的生活中,有N个关键的节点.有M个事件,记为一个三元组(Si,Ti,Wi),表示从节点 ...
- 洛谷——T P2136 拉近距离
https://www.luogu.org/problem/show?pid=2136 题目背景 我是源点,你是终点.我们之间有负权环. ——小明 题目描述 在小明和小红的生活中,有N个关键的节点.有 ...
- P2136 拉近距离
我也想有这样的爱情故事,可惜我单身 其实这道题就是一个比较裸的最短路问题.对于一个三元组 (S,W,T) ,S其实就是一个端点,而W就是到达的端点,连接两个端点的边长为-T,注意要取一个相反数,这样才 ...
- [洛谷OJ] P1114 “非常男女”计划
洛谷1114 “非常男女”计划 本题地址:http://www.luogu.org/problem/show?pid=1114 题目描述 近来,初一年的XXX小朋友致力于研究班上同学的配对问题(别想太 ...
- 洛谷 P1169 [ZJOI2007]棋盘制作
2016-05-31 14:56:17 题目链接: 洛谷 P1169 [ZJOI2007]棋盘制作 题目大意: 给定一块矩形,求出满足棋盘式黑白间隔的最大矩形大小和最大正方形大小 解法: 神犇王知昆的 ...
- 洛谷 P2279 03湖南 消防局的设立
2016-05-30 16:18:17 题目链接: 洛谷 P2279 03湖南 消防局的设立 题目大意: 给定一棵树,选定一个节点的集合,使得所有点都与集合中的点的距离在2以内 解法1: 贪心 首先D ...
- 洛谷P1220 关路灯
洛谷1220 关路灯 题目描述 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关 ...
- 【洛谷P1352】没有上司的舞会
[洛谷P1352]没有上司的舞会 x舷售 锚」翅θ 但是 拙臃 蓄ⅶ榔 暄条熨卫 翘ヴ馇 表现无愧于雪月工作室的核心管理 爸惚扎掬 颇瓶 芟缆肝 貌痉了 洵┭笫装 嗝◇裴腋 褓劂埭 ...
随机推荐
- linux系统 标准目录及其内容
路径名 操作系统 内容 /bin 所有 最核心的操作系统命令 /boot LS 内核和加载内核所需的文件 /dev 所有 伪终端,磁盘,打印机等的设备项 /etc 所有 关键的启动文件和配置文件 ...
- BZOJ 3043 IncDec Sequence:反向差分
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3043 题意: 给定一个长度为n的数列a[i],每次可以选择一个区间[l,r],使这个区间内 ...
- ES忽略TF-IDF评分——使用constant_score
Ignoring TF/IDF Sometimes we just don’t care about TF/IDF. All we want to know is that a certain wor ...
- L89
His voice was hoarse after several hours' speech.Attributive adjectives precede the noun.I gave the ...
- 第十五章-Web开发
随着web的发展, 最开始使用的CS架构已经不适合web了, 现在web使用的架构是BS架构 如今大部分重量级的软件都以web形式提供了 web开发的四个阶段 1) 静态web页面 2) CGI: 静 ...
- Multiple webcams on ZoneMinder
Monitoring a 3D Printer I have tidied my new workshop and I am starting to play with 3d-printing aga ...
- ZOJ1905Power Strings (KMP||后缀数组+RMQ求循环节)
Given two strings a and b we define a*b to be their concatenation. For example, if a = "abc&quo ...
- poj1475 Pushing Boxes[双重BFS(毒瘤搜索题)]
地址. 很重要的搜索题.★★★ 吐槽:算是写过的一道码量比较大的搜索题了,细节多,还比较毒瘤.虽然是一遍AC的,其实我提前偷了大数据,但是思路还是想了好长时间,照理说想了半小时出不来,我就会翻题解,但 ...
- WCF的用户名+密码认证方式(转)
概述 今天在做Master Data Service(后面简称MDS)项目时需要通过WCF来使用MDS的API,从而对MDS的数据进行操作.在这个过程中,遇到了一个棘手的问题,就是在客户端调用Web ...
- uC/OS-II源码分析(一)
下载地址:http://www.micrium.com/ 它的特点: 1)开源, 2)可移植性,绝大部分代码用C写,硬件相关部分用汇编写, 3可固化, 4)可剪裁,这通过条件编译实现,使用#defin ...