弱化版AC,标准版全RE
查看原帖
弱化版AC,标准版全RE
351973
fish_your_god楼主2020/7/10 23:50

如题,P3371 【模板】单源最短路径(弱化版)中代码全AC,在这道题就全RE。。。。

实在是不知道怎么回事了,难不成必须要用堆或优先队列优化?????完全不知道哪里会RE啊!!!

代码:

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <cstring>
#include <cmath>
#include <cstdio>
#include <queue>
#include <stack>
using namespace std;
const int INF = pow(2,31)-1;
int dis[10005];
bool visited[10005];
struct Edge {
	int topos;
	int val;
};
vector<vector<Edge> > graph;
int main() {
	int pointnum, edgenum, startid;
	cin>> pointnum>>edgenum>> startid;
	graph.resize(pointnum+1);
	int a, b, val;
	for (int i = 1; i <= edgenum; i++) {
		cin >>a>>b>>val;
		graph[a].push_back(Edge { b, val });
	}

	for (int i = 1; i <= pointnum; i++) {
		if (i == startid) dis[i] = 0;
		else dis[i] = INF;
	}

	for (int _ = 1; _ <= pointnum; _++) {
		int pos = 0;
		for (int i = 1; i <= pointnum; i++) {
			if (!visited[i]&&(pos == 0||dis[i]<dis[pos])) {
				pos = i;
			}
		}
		visited[pos] = true;

		for (vector<Edge>::iterator edge = graph[pos].begin(); edge != graph[pos].end(); edge++) {
			if (!visited[edge->topos] && dis[pos] + edge->val < dis[edge->topos])
				dis[edge->topos] = dis[pos] + edge->val;
		}
		
	}
	for (int i = 1; i <= pointnum; i++) {
		cout << dis[i] << " ";
	}
	return 0;
}

2020/7/10 23:50
加载中...