「3.3」虫洞 Wormholes

多组数据不清零------见祖宗

「3.3」虫洞 Wormholes

问题背景

「一本通3.3 练习2」

题目描述

John 在他的农场中闲逛时发现了许多虫洞。虫洞可以看作一条十分奇特的有向边,并可以使你返回到过去的一个时刻(相对你进入虫洞之前)。John 的每个农场有 M 条小路(无向边)连接着 N(从 1 到 N 标号)块地,并有 W 个虫洞。

现在 John 想借助这些虫洞来回到过去(在出发时刻之前回到出发点),请你告诉他能办到吗。 John 将向你提供 F 个农场的地图。没有小路会耗费你超过 10^4 秒的时间,当然也没有虫洞回帮你回到超过 10^4 秒以前。

输入格式

第一行一个整数 F,表示农场个数;

对于每个农场:

第一行,三个整数 N,M,W;

接下来 M 行,每行三个数 S,E,T,表示在标号为 S 的地与标号为 E 的地中间有一条用时 T 秒的小路;

接下来 W 行,每行三个数 S,E,T,表示在标号为 S 的地与标号为 E 的地中间有一条可以使 John 到达 T 秒前的虫洞。

输出格式

输出共 F 行,如果 John 能在第 i 个农场实现他的目标,就在第 i 行输出 YES,否则输出 NO。

样例输入1

2

3 3 1

1 2 2

1 3 4

2 3 1

3 1 3

3 2 1

1 2 3

2 3 4

3 1 8

样例输出1

NO

YES

注释说明

对于全部数据,1≤F≤5, 1≤N≤500, 1≤M≤2500, 1≤W≤200,1≤S,E≤N, ∣T∣≤10^4。

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
int n,m,dis[100005],a,b,c,huan[100005],w,t;
bool bl[100005];
struct ed {
	int to,w;
};
vector<ed>e[100005];
void spfa(int s){
	deque<int>q;
	memset(dis,0x3f,sizeof(dis));
	memset(bl,0,sizeof(bl));
	memset(huan,0,sizeof(huan));
	q.push_back(s);
	bl[s]=1;huan[s]++;
	dis[s]=0;
	while(!q.empty()) {
		int k=q.front();
		q.pop_front();
		bl[k]=0;
		int o;
		for(int i=0; i<e[k].size(); i++){
			o=e[k][i].to;
			if(e[k][i].w+dis[k]<dis[o]){
				dis[o]=e[k][i].w+dis[k];
				if(bl[o]==0){
					if(q.empty()||dis[o]<q.front())q.push_front(o);
					else q.push_back(o);
					bl[o]=1;
					huan[o]++;
					if(huan[o]>n){
						puts("YES");
						return;
					}
				}
			}
		}
	}
	puts("NO");
}
int main() {
	scanf("%d",&t);
	while(t--) {
		scanf("%d%d%d",&n,&m,&w);
		for (int i = 0; i <= 501; i++) e[i].clear();
		for(int i=1; i<=m; i++) {
			scanf("%d%d%d",&a,&b,&c);
			e[a].push_back((ed){b,c});
			e[b].push_back((ed){a,c});
		}
		for(int i=1; i<=w; i++) {
			scanf("%d%d%d",&a,&b,&c);
			e[a].push_back((ed){b,-c});
		}
		for (int i=1;i<=n;i++)e[0].push_back((ed){i,0});
		spfa(0);
	}
}
/*
2
3 3 1
1 2 2
1 3 4
2 3 1
3 1 3
3 2 1
1 2 3
2 3 4
3 1 8

NO
YES
*/
相关推荐
沐籽李几秒前
Proteina-Complexa:NVIDIA 如何把蛋白 Binder 设计推进到全原子生成时代?
大数据·人工智能·算法·英伟达·蛋白质生成
思麟呀几秒前
C++11并发编程:条件变量
java·linux·jvm·c++·windows
落羽的落羽9 分钟前
【项目】JsonRpc框架——开发实现2(业务层)
linux·数据结构·c++·人工智能·算法·json·动态规划
Shadow(⊙o⊙)11 分钟前
mkfifo()命名管道-FIFO客户端 服务端模拟。*System V消息队列、信号量(信号灯)。
linux·运维·服务器·开发语言·c++
h_a_o777oah13 分钟前
2026 蓝桥杯软件 C++B组 国赛比赛经历及备赛建议
c++·经验分享·算法·蓝桥杯
SHARK_pssm14 分钟前
【数据结构——单链表】
数据结构·经验分享·笔记
牛油果子哥q21 分钟前
C++六大默认成员函数深度精讲:构造/析构/拷贝/赋值/移动构造/移动赋值、编译器生成规则、深浅拷贝终极坑点与工程实战
开发语言·c++
Shadow(⊙o⊙)23 分钟前
System V共享内存详解,shm系列接口,三种共享内存删除机制。System V通信缺点分析
linux·运维·服务器·开发语言·网络·c++
lightqjx24 分钟前
【算法】数据结构_并查集
数据结构·算法·并查集
小雨下雨的雨24 分钟前
鸿蒙PC Electron框架实现流体气泡模拟器
前端·人工智能·算法·华为·electron·鸿蒙