C_and_CPP 板


LINE

抱歉又来打扰大家,这题明显是Dijkstra,我交上去是过的。 但我再跑Udebug(intput 是Batman那个) 却有21个不相同。 我想了一阵子,还是没找到问题,希望大家能帮我看一下。 udebug : https://www.udebug.com/UVa/10986 这是我的code #include <bits/stdc++.h> using namespace std; int n, m ,S, T; int w[20010][20010], dis[20010]; vector<int> v[20000+10]; struct Node { int node, weight; Node(int _n, int _w){ node = _n; weight = _w; } bool operator<(Node const other)const{ return weight > other.weight; } }; void dijsktra(int src) { priority_queue<Node> pq; pq.push(Node(src, 0)); while(!pq.empty()) { auto top = pq.top(); pq.pop(); if(dis[top.node] != 1e9) continue; dis[top.node] = top.weight; for(auto i : v[top.node]){ if(dis[i] == 1e9) pq.push(Node(i, top.weight + w[top.node][i])); } } } int main(int argc, char const *argv[]) { int N, cnt = 1, temp1, temp2, tempw; cin >> N; while(N--){ cin >> n >> m >> S >> T; for(int i = 0; i < n; i++) { v[i].clear(); dis[i] = 1e9; } while(m--) { cin >> temp1 >> temp2 >> tempw; v[temp1].push_back(temp2); v[temp2].push_back(temp1); w[temp1][temp2] = w[temp2][temp1] = tempw; } dijsktra(S); if(dis[T] != 1e9) printf("Case #%d: %d\n", cnt++, dis[T]); else printf("Case #%d: unreachable\n", cnt++); } return 0; } --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.141.64.159 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1592042786.A.DD9.html
1F:→ a58524andy: 你的dijkstra好像有点…特别(?06/13 19:34
2F:→ a58524andy: 要更新的点不是只有无限远的06/13 19:37
3F:→ darrenlee1: 对 但我一开始都设成无限远06/13 19:38
4F:推 firejox: 同一楼,你这不是Dijkstra06/14 13:35
5F:→ firejox: 简单反例是ABC三点皆相邻,起点A终点C,AC > AB + BC06/14 13:39
6F:→ darrenlee1: 但我每次都是目前能延伸最短的路径,假如AC>AB>BC 最06/14 14:11
7F:→ darrenlee1: 短路径不会是AC这条边06/14 14:11
8F:→ a58524andy: 测资有zero edge,假设现在两点A B跟Source都是1006/14 14:19
9F:→ a58524andy: 同时AC = 1、BC = 0,你的queue刚好先扫A的话06/14 14:19
10F:→ a58524andy: 那麽C不会被更新成S -> B -> C这个距离1006/14 14:20
11F:→ a58524andy: 而是会卡在S -> A -> C这个1106/14 14:20
12F:→ a58524andy: *并且假设AB=006/14 14:20
13F:→ a58524andy: 恩我在说甚麽@@ 这跟zero edge也没什麽关系06/14 14:23
14F:→ a58524andy: 总之当SA=SB=10、AC=m、BC=n、queue刚好先选A来跑 06/14 14:25
15F:→ a58524andy: 并且m>n的时候06/14 14:25
16F:→ a58524andy: 这个写法应该会出事06/14 14:25
17F:→ chengweihsu: 感觉是input处理有问题,他好像没说顶点间的边数<=106/14 15:07
18F:→ chengweihsu: 你用adjacent matrix存边的权重,如果同一对顶点06/14 15:07
19F:→ chengweihsu: (u,v)有>=两条边,你只会纪录最後输入的那条,但那06/14 15:07
20F:→ chengweihsu: 条可能比之前记的w[u][v]还大,这样你等於是在错的06/14 15:07
21F:→ chengweihsu: 图上跑dijkstra06/14 15:07
22F:→ a58524andy: 测了一下,楼上应该是对的 06/14 15:32
23F:→ darrenlee1: 他有重复的边的话我应该把他都加起来在跑dijktra 吗06/14 20:15
24F:→ darrenlee1: 我改成用+= 还是有点问题欸 还是是我理解有问题06/14 20:24
25F:→ darrenlee1: 我有先清成006/14 20:25
26F:→ darrenlee1: 回一下a大,我是用pq每次会帮我把最小的pop out出来,06/14 20:30
27F:→ darrenlee1: 所以一开始push (SA 10)(SB 10) 先把SA,pop out出来06/14 20:30
28F:→ darrenlee1: 後会push(AC 10+m),所以接下来pop out的会是SB,因06/14 20:30
29F:→ darrenlee1: 此m<n也不会有问题06/14 20:30
30F:→ chengweihsu: 有重复边的话你处理input时,要多加条件判断而不是06/14 20:55
31F:→ chengweihsu: 加起来,因为你最短路径一定是选所有连接(u,v)的边06/14 20:55
32F:→ chengweihsu: 中最短的06/14 20:55
33F:→ chengweihsu: 若路径包含(u,v)这两点06/14 20:56
34F:→ darrenlee1: 谢谢~过了06/14 21:00
35F:→ darrenlee1: 谢谢大家的帮忙06/14 21:00
※ 编辑: darrenlee1 (220.141.64.159 台湾), 06/14/2020 21:02:02







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP