hetao2504348 @ 2024-10-20 21:42:24
#include<iostream>
#include<vector>
#include<cstring>
using namespace std;
const int maxn=100001,inf=0x3f;
struct P{
int v,w;
};
vector<P> e[maxn];
long long dis[maxn];
int n,m,u,v,s,w,v1,w1;
int main(){
cin>>n>>m>>s;
for(int i=1;i<=m;i++){
cin>>u>>v>>w;
e[u].push_back({v,w});
}
memset(dis,inf,sizeof(dis));
for(int i=0;i<e[s].size();i++)dis[e[s][i].v]=e[s][i].w;
dis[s]=0;
for(int i=1;i<=n;i++){
if(e[i].empty())continue;
for(int j=0;j<e[i].size();j++){
v1=e[i][j].v,w1=e[i][j].w;
if(dis[v1]>dis[i]+w1)dis[v1]=dis[i]+w1;
}
}
for(int i=1;i<=n;i++)cout<<dis[i]<<' ';
return 0;
}
by DDD_et @ 2024-10-20 21:56:11
inf 怎么能只开 0x3f 啊,不都是开 0x3f3f3f3f 吗
@hetao2504348
by snowball10185 @ 2024-10-22 17:23:00
对呀,memset()是按照字节复值的,你0x3f是63啊
@hetao2504348