TOJ--2674--最短路(spfa)
2014-06-16 01:17
225 查看
厌死了......排位 晋级赛 两连跪 。。。
三角形 的那题还是 无限WA 。。。
还有 明天又要早起。。。
先还是来看下这题吧 话说 好久没写 最短路了 --------- spfa 是我最喜欢的最短路版本
touch me
这题 其实相比其它的最短路 还是有个很让人看不懂的地方---让我纠结了很久
首先 它告诉了我们城市的编号 是从 1~1000
然后 又突然告诉我们 哪些城市和我们的出发地相邻 假如是 1 10 100.。。之类的
最后 告诉我们 你想取哪些城市
我就在想 起点呢!!! 你肯定是通过相邻的城市扩散出去..然后不断稀疏操作,,,,
打完把LOL 我想到 下标0 TM的还没有用过它。。。
题目 给点提示 不可以吗 作妹啊
这题 我本来是想用 邻接表写的 但是因为这里2条路之间可能存在多条道路 所以要不断更新最短距离 所以 我就用map 二维数组来写了 主要是嫌太烦了 在输入的时候 得遍历一下起点或终点相邻边 找下有没有对应的点 我觉得这样每次一个for 好烦的。。。
虽然 map二维数组 真的很浪费空间 时间 但这里为了简便
其实 最开始 我是用floyd 可能因为结点数1000太多了吧 对于O(n^3) 而言 TLE了 或者 我写差了。。
你用floyd AC了 麻烦 下面 给我留言让我看下 thanks
关于 spfa 网上有很多介绍 而且 spfa 不难理解 只是不断的从队列中 取出一个结点 不断尝试地与它相邻结点进行稀疏操作 仅此而已
啰嗦了一大堆 贴代码了
View Code
又已经是次日凌晨了~~
三角形 的那题还是 无限WA 。。。
还有 明天又要早起。。。
先还是来看下这题吧 话说 好久没写 最短路了 --------- spfa 是我最喜欢的最短路版本
touch me
这题 其实相比其它的最短路 还是有个很让人看不懂的地方---让我纠结了很久
首先 它告诉了我们城市的编号 是从 1~1000
然后 又突然告诉我们 哪些城市和我们的出发地相邻 假如是 1 10 100.。。之类的
最后 告诉我们 你想取哪些城市
我就在想 起点呢!!! 你肯定是通过相邻的城市扩散出去..然后不断稀疏操作,,,,
打完把LOL 我想到 下标0 TM的还没有用过它。。。
题目 给点提示 不可以吗 作妹啊
这题 我本来是想用 邻接表写的 但是因为这里2条路之间可能存在多条道路 所以要不断更新最短距离 所以 我就用map 二维数组来写了 主要是嫌太烦了 在输入的时候 得遍历一下起点或终点相邻边 找下有没有对应的点 我觉得这样每次一个for 好烦的。。。
虽然 map二维数组 真的很浪费空间 时间 但这里为了简便
其实 最开始 我是用floyd 可能因为结点数1000太多了吧 对于O(n^3) 而言 TLE了 或者 我写差了。。
你用floyd AC了 麻烦 下面 给我留言让我看下 thanks
关于 spfa 网上有很多介绍 而且 spfa 不难理解 只是不断的从队列中 取出一个结点 不断尝试地与它相邻结点进行稀疏操作 仅此而已
啰嗦了一大堆 贴代码了
#include <iostream> #include <queue> #include <algorithm> #include <cstring> using namespace std; const int inf = 0x3f3f3f3f; const int size = 1010; int map[size][size]; int dist[size]; int go[size]; bool vis[size]; void spfa() { int i , now; memset(vis, false, sizeof(vis)); for(i = 0; i < size; i++) dist[i] = (i==0)?0:inf; queue<int>qe; while( !qe.empty() ) qe.pop(); qe.push(0); vis[0] = true; while(!qe.empty()) { now = qe.front(); for(i = 0; i < size; i++) { if(dist[i] > dist[now] + map[now][i]) { dist[i] = dist[now] + map[now][i]; if( !vis[i] ) { qe.push(i); vis[i] = true; } } } qe.pop(); vis[now] = false; } } int main() { int t , s ,d; int i , j , mmin; int next, st, end, len; while( ~scanf("%d %d %d", &t, &s, &d) ) { for(i = 0; i < size; i++) for(j = 0; j <=i; j++) if(i == j) map[i][j] = 0; else map[i][j] = map[j][i] = inf; while(t--) { scanf("%d %d %d", &st, &end, &len); if( len < map[st][end] ) map[st][end] = map[end][st] = len; } for(i = 0; i < s; i++) { scanf("%d", &next); map[0][next] = map[next][0] = 0; } for(i = 0; i < d; i++) scanf( "%d",&go[i] ); spfa(); mmin = inf; for(i = 0; i < d; i++) { if( dist[ go[i] ] < mmin ) mmin = dist[ go[i] ]; } printf("%d\n", mmin); } return 0; }
View Code
又已经是次日凌晨了~~
相关文章推荐
- TOJ 2217. Invitation Cards【最短路dijkstra+堆优化或者SPFA】
- TOJ 2217. Invitation Cards【最短路dijkstra+堆优化或者SPFA】
- Bzoj 2763: [JLOI2011]飞行路线 拆点,分层图,最短路,SPFA
- hdu 1548 A strange lift 最短路 spfa模板
- hdu 1874 畅通工程续 最短路spfa
- F - Wormholes——最短路_spfa()算法+前向星
- S - Layout ——最短路_spfa()算法+前向星+负环+差分约束
- UVA11280 最短路 + SPFA变形 + 单向链表存储边 + 结构体构造函数 + 鲁棒性
- Funny Car Racing UVA - 12661 --SPFA最短路变形
- Silver Cow Party SPFA+SLF优化 单源起点终点最短路
- POJ - 3259 Wormholes(SPFA最短路判断负环)
- 最短路SPFA+DP+uva10917
- POJ 3255(次短路+SPFA)
- hdu--2544--题如其名<最短路>--dij<priority_queue>||spfa<queue>
- CDOJ 30 裸最短路 SPFA
- POj 2449 Remmarguts' Date K短路 A*+SPFA
- HDU 2680 Choose the best route【多源最短路,Dijkstra+spfa】
- poj 2267 From Dusk till Dawn or: Vladimir the Vampire 最短路spfa
- poj 2763: [JLOI2011]飞行路线(spfa分层图最短路)
- 【原创】最短路模板 Floyd,优先队列优化dijkstra,SPFA