您的位置:首页 > 财经 > 产业 > 桐城网站设计_推广一般去哪发帖_天津站内关键词优化_如何优化网络

桐城网站设计_推广一般去哪发帖_天津站内关键词优化_如何优化网络

2024/12/23 6:13:35 来源:https://blog.csdn.net/no_play_no_games/article/details/142700696  浏览:    关键词:桐城网站设计_推广一般去哪发帖_天津站内关键词优化_如何优化网络
桐城网站设计_推广一般去哪发帖_天津站内关键词优化_如何优化网络

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

「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。

#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 8NO
YES
*/

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com