prx1460 @ 2023-03-16 13:39:12
#include<bits/stdc++.h>
using namespace std;
const long long N=1e5+10,INF=1e8+1010;
long dis[N],mp[N][N],v[N],n,m,s;
void dijkstra(int s) {
memset(dis,INF,sizeof(dis));
dis[s]=0;
while(1) {
int mini=0,min_=INF;
for(int j=1; j<=n; j++) {
if(!v[j]&&min_>dis[j]) {
mini=j;
min_=dis[j];
}
}
if(mini==0) return;
v[mini]=1;
for(int i=1; i<=n; i++)
if(dis[i]>dis[mini]+mp[mini][i])
dis[i] = dis[mini]+mp[mini][i];
}
}
int main(){
cin>>n>>m>>s;
for(int i=1;i<=m;i++){
int x,y,z;
cin>>x>>y>>z;
mp[x][y]=z;
}
dijkstra(s);
for(int i=1;i<=n;i++){
cout<<dis[i]<<" ";
}
return 0;
}
为啥在c++中编译成功了,洛谷就说编译失败啊? 结果
by sidekick257 @ 2023-03-16 13:40:09
空间开太大了 ......
by mashduihca @ 2023-03-16 13:49:09
1e10也真敢开,。
by prx1460 @ 2023-03-16 13:57:10
ありがとうございます。 已关注