请问一下为什么wa了(样例能过)
查看原帖
请问一下为什么wa了(样例能过)
672837
DaShabby楼主2022/2/3 15:45
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
const int MAXN=1e6,MAX=5e3+100,inf=0x3f3f3f3f;
long long int INF=247483647;
long long G[MAX][MAX],d[MAXN],vis[MAXN];
void Dijkstra(long long int st,long long n){
	fill(d,d+MAXN,INF);
	d[st]=0;
	long long int i,j,v;
	for(i=1;i<=n;i++){
		long long int u=-1,MIN=INF;
		for(j=1;j<=n;j++){
			if(!vis[j]&&d[j]<MIN){
				u=j;
				MIN=d[j];
			}
		}
		if(u==-1)break;
		vis[u]=1;
		for(v=1;v<=n;v++){
		    if(d[v]>d[u]+G[u][v]&&G[u][v]<INF)d[v]=d[u]+G[u][v];	
		}	
	}
	for(i=1;i<=n;i++){
		if(d[i]!=INF)cout<<d[i]<<' ';
		else cout<<-1<<' ';
	}
	cout<<endl;
}
int main()
{
	long long int n,m,u,v,w,st,i,f=0;
	cin>>n>>m;
	fill(G[0],G[0]+MAX*MAX,INF);
	for(i=1;i<=m;i++){
		cin>>u>>v>>w;
		if(w<G[u][v])G[u][v]=w;
		if(u=v)G[u][v]=0;
	}
	Dijkstra(1,n);
	
	return 0;
}
2022/2/3 15:45
加载中...