RT,给孩子整自闭了(((
#include<bits/stdc++.h>
using namespace std;
const long long inf=2147483647;
struct Edge{
int v,w;
Edge(){
}
Edge(int vv,int ww){
v=vv;
w=ww;
}
};
vector<Edge> dis[100010];
bool vis[100010];
int f[100010];
int n,m,s;
int read()
{
int ans=0,flag=1;
char ch=getchar();
while( (ch>'9' || ch<'0') && ch!='-' ) ch=getchar();
if(ch=='-') flag=-1,ch=getchar();
while(ch>='0' && ch<='9') ans=ans*10+ch-'0',ch=getchar();
return ans*flag;
}
void dijk(){
for (int i=1;i<=n;i++){
int minn=inf,v=0;
for (int j=1;j<=n;j++){
if (!vis[j]&&f[j]<minn){
minn=f[j];
v=j;
}
}
if (minn==inf) break;
vis[v]=1;
for (int j=0;j<dis[v].size();j++){
f[dis[v][j].v]=min(f[dis[v][j].v],f[v]+dis[v][j].w);
}
}
}
int main()
{
n=read();
m=read();
s=read();
for (int i=1;i<=m;i++){
int x,y,d;
x=read(),y=read(),d=read();
dis[x].push_back(Edge(y,d));
dis[y].push_back(Edge(x,d));
}
memset(f,255,sizeof(f));
f[s]=0;
dijk();
for (int i=1;i<=n;i++){
cout<<f[i]<<' ';
}
}
顺便问一句为啥子回帖/发帖还要验证码?