wa 1和4 ....dj和优先队列优化
查看原帖
wa 1和4 ....dj和优先队列优化
185935
lavd楼主2020/10/21 16:03

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;
}
2020/10/21 16:03
加载中...