P3371样例能过提交WA
查看原帖
P3371样例能过提交WA
1048327
KANO07楼主2023/11/14 21:58

除了爆内存的问题为什么会WA呢

#include<bits/stdc++.h>
using namespace std;
int n;
vector<int>dij(vector<vector<int>>mp,int root){
	//distance[i]原点到i的距离 
	vector<int>dis(n+1,INT_MAX/2);
	//是否访问过 
	vector<int>visit(n+1,false);
	dis[root] = 0;
	//i遍历所有点
	for(int i = 1;i<=n;i++){
		//node用来寻找当前相邻节点的最近点 
		int node = -1;	
		for(int j = 1;j<=n;j++){
			//如果找到 
			if(visit[j]==false&&(node==-1||dis[node]>dis[j])){
				node = j;
			}
		}
		//更新Node相邻点的距离
		for(int j = 1;j<=n;j++){
			dis[j] = min(dis[j],dis[node]+mp[node][j]);
		} 
		visit[node] = true;
	}
	return dis;
}

int main(){
	//邻接矩阵初始化 
	int m,s;
	cin>>n>>m>>s;
	vector<vector<int>>mp(n+1,vector<int>(n+1,INT_MAX/2));
	for(int i = 0;i<m;i++){
		int u,v;
		cin>>u>>v;
		cin>>mp[u][v];
	}
	vector<int>ans = dij(mp,s);
	//遍历输出 
	for(int i = 1;i<=n;i++){
		if(ans[i]!=INT_MAX/2)cout<<ans[i]<<" ";
		else cout<<INT_MAX<<" ";
	}
	return 0;
} 
2023/11/14 21:58
加载中...