wa了1和4 不知道为什么.....
#include<bits/stdc++.h>
using namespace std;
long long i,n,m,s,head[1000001],dis[1000001],a,b,tot,w,k;
bool vis[1000001];
struct node{
long long w,next,to;
bool operator()(long long x,long long y){
return dis[x]>dis[y];
}
}t[400001];
priority_queue<long long,vector<long long>,node> q;
void add(long long x,long long y,long long z){
tot++;
t[tot].next=head[x];
head[x]=tot;
t[tot].w=w;
t[tot].to=y;
}
int main(){
cin>>n>>m>>s;
for(i=1;i<=m;i++){
cin>>a>>b>>w;
add(a,b,w);
}
memset(vis,false,sizeof(vis));
memset(dis,0x7f,sizeof(dis));
dis[s]=0;
q.push(s);
while(!q.empty()){
long long u=q.top();
q.pop();
if(vis[u])continue;
vis[u]=true;
for(i=head[u];i;i=t[i].next){
long long v=t[i].to;
if(dis[v]>dis[u]+t[i].w){
dis[v]=dis[u]+t[i].w;
if(!vis[v])q.push(v);
}
}
}
for(i=1;i<=n;i++)cout<<dis[i]<<' ';
return 0;
}