博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LightOj 1074 Extended Traffic (spfa+负权环)
阅读量:5370 次
发布时间:2019-06-15

本文共 1978 字,大约阅读时间需要 6 分钟。

题目链接:

  

题目大意:

  有一个大城市有n个十字交叉口,有m条路,城市十分拥挤,因此每一个路都有一个拥挤度,政府就出台了一个政策,对每一条路收取过路费,收取标准为(终点拥挤度 - 起点拥挤度 )3,,问每次询问m,输出1到m的最小花费,如果不能到达或者最小化费小于3的时候输出‘?’。

解题思路:

  用spfa。标记负环。

1 #include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 using namespace std; 9 10 #define maxn 210 11 #define INF 0x3f3f3f3f 12 13 struct Edge 14 { 15 int e, w; 16 Edge(int e=0, int w=0):e(e),w(w){} 17 }; 18 19 vector
G[maxn]; 20 int dist[maxn], n; 21 bool Cin[maxn]; 22 void init(); 23 int spfa (); 24 void dfs (int u); 25 26 int main () 27 { 28 int m, t, l=0, map[maxn]; 29 scanf ("%d", &t); 30 31 while (t --) 32 { 33 printf ("Case %d:\n", ++l); 34 init (); 35 scanf ("%d", &n); 36 37 for (int i=1; i<=n; i++) 38 scanf ("%d", &map[i]); 39 40 scanf ("%d", &m); 41 while (m --) 42 { 43 int a, b, num; 44 scanf ("%d %d", &b, &a); 45 num = (map[a] - map[b]) * (map[a] - map[b]) * (map[a] - map[b]); 46 G[b].push_back (Edge(a, num)); 47 } 48 spfa (); 49 scanf ("%d", &m); 50 while (m --) 51 { 52 int num; 53 scanf ("%d", &num); 54 if (Cin[num] || dist[num] < 3 || dist[num] == INF) 55 printf ("?\n"); 56 else 57 printf ("%d\n", dist[num]); 58 } 59 } 60 } 61 void init() 62 { 63 int i, j; 64 memset (Cin, false, sizeof(Cin)); 65 for (i=0; i
Q; 75 bool vis[maxn]; 76 int cnt[maxn]; 77 memset (vis, false, sizeof(vis)); 78 memset (cnt, 0, sizeof(cnt)); 79 Q.push (1); 80 cnt[1] = 1; 81 dist[1] = 0; 82 83 while (!Q.empty()) 84 { 85 int s = Q.front (); 86 Q.pop (); 87 vis[s] = false; 88 int len = G[s].size(); 89 90 for (int i=0; i
dist[s] + x.w) 96 { 97 dist[x.e] = dist[s] + x.w; 98 if (!vis[x.e]) 99 {100 vis[x.e] = true;101 Q.push (x.e);102 cnt[x.e] ++;103 if (cnt[x.e] == n)//只要x.e在负环内,则在负环内的点可以到达的点,都没有最短路径104 dfs(x.e);105 }106 }107 }108 }109 }110 111 void dfs (int u)112 {113 int len = G[u].size();114 Cin[u] = true;115 for (int i=0; i

 

转载于:https://www.cnblogs.com/alihenaixiao/p/4242069.html

你可能感兴趣的文章
OWIN概述
查看>>
SQL Server SQL语句执行顺序
查看>>
java.awt.headless 模式
查看>>
上周还是合意的,且找到了一定的遵循4.6-4.12
查看>>
POJ 3993 / HDU 3353
查看>>
Android按钮单击事件处理的几种方法(Android学习笔记)
查看>>
常见的压缩命令
查看>>
vs快捷键
查看>>
repeater里面绑定repeter
查看>>
C# 中DllImport的用法
查看>>
hdoj 1028 Ignatius and the Princess III(区间dp)
查看>>
鼠标穿透(flex实现)
查看>>
Ceph 知识摘录(块存储操作)
查看>>
170325 第六章应用层 域名系统 DNS
查看>>
HTML5存储
查看>>
区块链3.0:拥抱EOS
查看>>
Longest Ordered Subsequence
查看>>
Jquery实现的几款漂亮的时间轴
查看>>
数据结构之停车场
查看>>
【Flask】Sqlalchemy join
查看>>