萌新求助关于次短路
查看原帖
萌新求助关于次短路
298549
SIXIANG32楼主2021/12/4 18:28
void dijkstra(int s) {
	memset(dis, 0x3f, sizeof(dis));
	memset(dis2, 0x3f, sizeof(dis2));
	memset(vis, 0, sizeof(vis));	
	priority_queue <node> que;
	que.push(node(s, 0));
	dis[s] = 0;
//	dis2[s] = 0;
	while(!que.empty()) {
		node fr = que.top(); que.pop();
		for(int p = 0; p < gra[fr.to].size(); p++) {
			int v = gra[fr.to][p].to, w = gra[fr.to][p].val, fuck = fr.val + w;
//			if(!vis[v]) {
				if(dis[v] > fuck) {
					swap(dis[v], fuck);
					que.push(node(v, dis[v]));
				}
				if(dis2[v] > fuck && dis[v] < fuck) {
					dis2[v] = fuck;
					que.push(node(v, dis2[v]));
				}
//			}
		}
	}
}

次短路 dij 好像是这样写的,反正是 A 了,但是由于没有维护 vis 所以理论上来说应该是能卡掉得 w

所以是这玩意儿卡不掉还是理论上能卡?如果能卡怎么卡?qwq?

如果这是个在大佬眼里很傻逼的问题,这就删帖 qwq

2021/12/4 18:28
加载中...