朴素Dijkstra,第二个样例不对,第一个对了,巨佬康康哪里错了(=@__@=)
#pragma GCC optmize(2)
#include<bits/stdc++.h>
using namespace std;
#define int long long
int inf;
int n,m,edge[2005][2005],dis[2005];
bool vis[2005];
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
memset(edge,127,sizeof(edge));
inf=edge[1][1];
cin>>n>>m;
for(int i=1;i<=m;i++){
int u,v,w;
cin>>u>>v>>w;
edge[u][v]=w;
}
for(int i=1;i<=n;i++){
dis[i]=edge[1][i];
}
vis[1]=true;
dis[1]=0;
for(int i=1;i<=n;i++){
int temp=inf,t=-1;
for(int j=1;j<=n;j++){
if(!vis[j]&&temp>dis[j]){
temp=dis[j];
t=j;
}
}
if(t==-1)break;
vis[t]=true;
for(int j=1;j<=n;j++){
if(!vis[j]&&edge[t][j]<inf){
if(dis[j]>dis[t]+edge[t][j])dis[j]=dis[t]+edge[t][j];
}
}
}
for(int i=1;i<=n;i++){
if(dis[i]==inf)cout<<"-1 ";
else cout<<dis[i]<<" ";
}
cout<<endl;
return 0;
}