nyoj 天下第一 (spfa)

要求路径长度大于一,判断出环即可结束。。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstdlib>
 4 #include<cstring>
 5 #include<string>
 6 #include<queue>
 7 #include<algorithm>
 8 #include<map>
 9 #include<iomanip>
10 #include<climits>
11 #include<string.h>
12 #include<cmath>
13 #include<stdlib.h>
14 #include<vector>
15 #include<set>
16 #define INF 1e7
17 #define MAXN 100010
18 #define maxn 1000010
19 #define Mod 1000007
20 #define N 1010
21 using namespace std;
22 typedef long long LL;
23
24 struct node{ int x; double w; };
25 vector<node> G[1010];
26 int u, v;
27 double w;
28 int n, m;
29 int T;
30 int cnt[555];
31 int vis[555];
32 double dis[555];
33
34 bool  spfa()
35 {
36     queue<node> q;
37     q.push({ 1, 0 });
38     vis[1] = 1;
39     dis[1] = 1;
40     while (!q.empty()){
41         node now = q.front();
42         q.pop();
43         vis[now.x] = 0;
44         for (int i = 0; i < G[now.x].size(); ++i) {
45             node v = G[now.x][i];
46             if (dis[now.x] * v.w > dis[v.x]) {
47                 dis[v.x] = dis[now.x] * v.w;
48                 if (!vis[v.x]) {
49                     vis[v.x] = 1;
50                     cnt[v.x]++;
51                     q.push({ v.x, dis[v.x] });
52                     if (cnt[v.x] >= n) return true;
53                 }
54             }
55         }
56     }
57     return false;
58 }
59
60 void init()
61 {
62     memset(dis,0,sizeof(dis));
63     memset(vis,0,sizeof(vis));
64     memset(cnt,0,sizeof(cnt));
65     for (int i = 0; i <= n; ++i)
66         G[i].clear();
67 }
68
69 void run()
70 {
71     cin >> n >> m;
72     init();
73     for (int i = 0; i < m; ++i) {
74         cin >> u >> w >> v;
75         G[u].push_back({v,w});
76     }
77     if (spfa()) puts("Yes");
78     else puts("No");
79 }
80
81 int main()
82 {
83     cin >> T;
84     while (T--)
85         run();
86     //system("pause");
87     return 0;
88 }
时间: 2025-01-01 23:16:04

nyoj 天下第一 (spfa)的相关文章

nyoj973 天下第一(spfa判环)

题目973 题目信息 运行结果 本题排行 讨论区 天下第一 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 AC_Grazy一直对江湖羡慕不已,向往着大碗吃肉大碗喝酒的豪情,但是"人在江湖漂,怎能 不挨刀","人在江湖身不由己",如果自己的武功太差,在江湖会死的很惨,但是AC_Grazy没有 武功秘籍练不了绝世武功.有道是"山重水复疑无路,柳暗花明又一村",在AC_Grazy家里面 竟然藏着一本书,书名竟然叫做[超级

NYOJ 1274 信道安全【最短路,spfa+链式向前星】

信道安全 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 Alpha 机构有自己的一套网络系统进行信息传送.情报员 A 位于节点 1,他准备将一份情报 发送给位于节点 n 的情报部门.可是由于最近国际纷争,战事不断,很多信道都有可能被遭到监 视或破坏. 经过测试分析,Alpha 情报系统获得了网络中每段信道安全可靠性的概率,情报员 A 决定选 择一条安全性最高,即概率最大的信道路径进行发送情报. 你能帮情报员 A 找到这条信道路径吗?  输入 第一行: T 表示以下

NYOJ 973 天下第一

题目连接:http://acm.nyist.net/JudgeOnline/problem.php?pid=973 算法分析: spfa+负环判定 在传功的过程中如果因为f<1导致逐渐变小,那么即可以负环判定 #include <iostream> #include<cstdio> #include <cstdlib> #include <queue> #include <vector> using namespace std; const

NYOJ 973 天下第一(最长路判环)

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=973 题目大意:给你n种武功,每两种武功都可以相互转化,但是有转化率f, 每次必须从一开始转化, 中间有武功转化不了, 后面的就不能在转化了, 问你能否可以无限增加转化. 在做这道题以前做了和这道题一样的一道题, 所以我认为很快就能AC了, 但是这道题我还是弄了一天还是没能AC.来讲一下让我很是郁闷的问题吧. 这道题可以用最短路判环(spfa只需稍微变一下)来做,也可以用直接深搜来做.我

nyoj 1274信道安全 第九届河南省赛(SPFA)

信道安全 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 Alpha 机构有自己的一套网络系统进行信息传送.情报员 A 位于节点 1,他准备将一份情报 发送给位于节点 n 的情报部门.可是由于最近国际纷争,战事不断,很多信道都有可能被遭到监 视或破坏. 经过测试分析,Alpha 情报系统获得了网络中每段信道安全可靠性的概率,情报员 A 决定选 择一条安全性最高,即概率最大的信道路径进行发送情报. 你能帮情报员 A 找到这条信道路径吗? 输入 第一行: T 表示以下有

Nyoj Arbitrage(Floyd or spfa or Bellman-Ford)

描述Arbitrage is the use of discrepancies in currency exchange rates to transform one unit of a currency into more than one unit of the same currency. For example, suppose that 1 US Dollar buys 0.5 British pound, 1 British pound buys 10.0 French francs

NYOJ 115 城市平乱

城市平乱 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 南将军统领着N个部队,这N个部队分别驻扎在N个不同的城市. 他在用这N个部队维护着M个城市的治安,这M个城市分别编号从1到M. 现在,小工军师告诉南将军,第K号城市发生了暴乱,南将军从各个部队都派遣了一个分队沿最近路去往暴乱城市平乱. 现在已知在任意两个城市之间的路行军所需的时间,你作为南将军麾下最厉害的程序员,请你编写一个程序来告诉南将军第一个分队到达叛乱城市所需的时间. 注意,两个城市之间可能不只一条路.

NYOJ 247 虚拟的城市之旅

虚拟的城市之旅 时间限制:3000 ms  |  内存限制:65535 KB 难度:6 描述 展馆是未来城市的缩影,个人体验和互动是不变的主题.在A国展馆通过多维模式和高科技手段,引领参观者在展示空间踏上一段虚拟的城市之旅. 梦幻国有N个城市和M条道路,每条道路连接某两个城市.任意两个城市之间最多只有一条道路直接相连.这M条道路中有一部分为单向通行的道路,一部分为双向通行的道路. 梦幻国幅员辽阔,各地的资源分布情况各不相同,这就导致了同一种商品在不同城市的价格不一定相同.但是,同一种商品在同一个

uva 10099 The Tourist Guide nyoj 1019 亲戚来了【单个路线最大流【最短路算法】】

题目:uva 10099 The Tourist Guide nyoj 1019 亲戚来了 题意:给出一个无向图,每条路有一个容量.从 s 到 t 的一条最大的流量. 分析:这个题目可以用最短路的算法来做,最短路是求从 s 到 t 的最短路,这里是求从 s 到 t 的最小容量.最短路的三种算法都可以. nyoj的使我们比赛的题目,有坑,图有重边,要处理,还有s可能等于t. spfa代码: #include <cstdio> #include <iostream> #include