题目背景

我是源点,你是终点。我们之间有负权环。 ——小明

题目描述

在小明和小红的生活中,有\(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 拉近距离的更多相关文章

  1. 洛谷 P2136 拉近距离 题解

    P2136 拉近距离 题目背景 我是源点,你是终点.我们之间有负权环. --小明 题目描述 在小明和小红的生活中,有N个关键的节点.有M个事件,记为一个三元组(Si,Ti,Wi),表示从节点Si有一个 ...

  2. P2136 拉近距离(spfa判负环)

    洛谷—— P2136 拉近距离 题目背景 我是源点,你是终点.我们之间有负权环. ——小明 题目描述 在小明和小红的生活中,有N个关键的节点.有M个事件,记为一个三元组(Si,Ti,Wi),表示从节点 ...

  3. 洛谷——T P2136 拉近距离

    https://www.luogu.org/problem/show?pid=2136 题目背景 我是源点,你是终点.我们之间有负权环. ——小明 题目描述 在小明和小红的生活中,有N个关键的节点.有 ...

  4. P2136 拉近距离

    我也想有这样的爱情故事,可惜我单身 其实这道题就是一个比较裸的最短路问题.对于一个三元组 (S,W,T) ,S其实就是一个端点,而W就是到达的端点,连接两个端点的边长为-T,注意要取一个相反数,这样才 ...

  5. [洛谷OJ] P1114 “非常男女”计划

    洛谷1114 “非常男女”计划 本题地址:http://www.luogu.org/problem/show?pid=1114 题目描述 近来,初一年的XXX小朋友致力于研究班上同学的配对问题(别想太 ...

  6. 洛谷 P1169 [ZJOI2007]棋盘制作

    2016-05-31 14:56:17 题目链接: 洛谷 P1169 [ZJOI2007]棋盘制作 题目大意: 给定一块矩形,求出满足棋盘式黑白间隔的最大矩形大小和最大正方形大小 解法: 神犇王知昆的 ...

  7. 洛谷 P2279 03湖南 消防局的设立

    2016-05-30 16:18:17 题目链接: 洛谷 P2279 03湖南 消防局的设立 题目大意: 给定一棵树,选定一个节点的集合,使得所有点都与集合中的点的距离在2以内 解法1: 贪心 首先D ...

  8. 洛谷P1220 关路灯

    洛谷1220 关路灯 题目描述 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关 ...

  9. 【洛谷P1352】没有上司的舞会

    [洛谷P1352]没有上司的舞会 x舷售 锚」翅θ 但是 拙臃 蓄ⅶ榔 暄条熨卫 翘ヴ馇 表现无愧于雪月工作室的核心管理 爸惚扎掬 颇瓶 芟缆肝 貌痉了 洵┭笫装 嗝◇裴腋 褓劂埭 ...

随机推荐

  1. iOS开发数据库-FMDB

    前言 FMDB是以OC的方式封装了SQLite的C语言API,使用起来更加面向对象,省去了很多麻烦.冗余的C语言代码:对比苹果自带的Core Data框架,更加轻量级和灵活:提供了多线程安全的数据库操 ...

  2. BZOJ 1724 [Usaco2006 Nov]Fence Repair 切割木板:贪心 优先队列【合并果子】

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1724 题意: 你要将一块长木板切成n段,长度分别为a[i](长木板的长度 = ∑ a[i] ...

  3. CentOS 7编译安装Tengine+PHP+MariaDB全程笔记

    安装环境:CentOS7 3.10.0-693.5.2.el7.x86_64 准备源码包: pcre-8.41.tar.gz openssl-1.0.1h.tar.gz zlib-1.2.11.tar ...

  4. listen and translation exercise 53

    It was hard work and there weren't any interesting things for him. You should be an expert with comp ...

  5. 如何通过giihub下载软件

    因为不懂英文, 所以找到了网站也不知道要怎么下载? 需求: 假设要下载的的一个jar包,  mybatis-generator 1.  利用搜索引擎 2. 点进去, 看到那个release  (rel ...

  6. python打印字体颜色

        格式:\033[显示方式;前景色;背景色m 显示方式           意义-------------------------0                终端默认设置1         ...

  7. 关于qwerta

    性别女 爱好男 有时喜欢装成男孩子混迹于OI圈. 就读于长沙市MD中学 是个剧毒蒻蒻蒻. 以 qwerta['kwɜ:rtɑ] 的ID混迹于各大OJ,但是在其它地方通常用qwertaya(重名率太高了 ...

  8. Codeforces Round #394 (Div. 2) 题解

    无需吟唱,直接传送 problem A 题目大意 已知有n个偶数,m个奇数,问这些数有没有可能组成一个严格递增1的序列 题解 判断abs(n,m) <= 1即可,注意n,m均为0的情况. Cod ...

  9. 几种开源SIP协议栈对比

    几种开源SIP协议栈对比 随着VoIP和NGN技术的发展,H.323时代即将过渡到SIP时代,在H.323的开源协议栈中,Openh323占统治地位,它把一个复杂而又先进的H.323协议栈展现在普通程 ...

  10. bootstrap 全局样式

    reset.css html { font-family: sans-serif; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100% ...