建议加强数据

P4779 【模板】单源最短路径(标准版)

星星与辰 @ 2022-07-19 21:21:12

#include<bits/stdc++.h>
using namespace std;
typedef pair<long long,int> pii;
int head[100001],to[600001],nxt[600001],cnt;
long long w[600001],dis[100001];
bool vis[500001];
inline void add(int x,int y,long long z){
    nxt[++cnt]=head[x];
    head[x]=cnt;
    to[cnt]=y;
    w[cnt]=z;
}
priority_queue<pii,vector<pii>,greater<pii> >q;
int main(){
    int n,m,s;
    scanf("%d%d%d",&n,&m,&s);
    int x,y;
    long long z;
    for(int i=1;i<=m;++i){
        scanf("%d%d%lld",&x,&y,&z);
        add(x,y,z);
    }
//  for(int i=1;i<=k;++i){
//      scanf("%d%lld",&x,&z);
//      add(1,x,z);
//  }
    memset(dis,-1,sizeof(dis));
    dis[1]=0;
    q.push(make_pair(0,1));
    while(!q.empty()){
        pii k=q.top();
        q.pop();
        int u=k.second;
        if(vis[u])continue;
        vis[u]=true;
        int i=head[u];
        while(i){
            if(dis[to[i]]>dis[u]+w[i]||dis[to[i]]==-1){
                dis[to[i]]=dis[u]+w[i];
                q.push(make_pair(dis[to[i]],to[i]));
            }
            i=nxt[i];
        }
    }
    for(int i=1;i<=n;++i){
        printf("%d ",dis[i]);
    }
    return 0;
}

by 星星与辰 @ 2022-07-19 21:21:47

这是我的代码,将1设为出发点,但是过了


by yinhee @ 2022-07-19 21:22:01

orz


by 星星与辰 @ 2022-07-19 21:22:04

所以s有什么用?


by char_cha_ch @ 2022-07-19 21:22:32

@星星与辰 这个问题好像也不大吧,都能练最短路


by stomfrom @ 2022-11-15 17:22:48

@星星与辰 这个是单源最短路,实际上无论是哪个点都是一样的


|