36分(最后两组对),求指导

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

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


|