WA三个点

P1342 请柬

hard_learn @ 2024-08-30 08:59:24

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,ans=0;
struct st{
    int c,step;
};
struct node{
    int id,x;
    bool operator <(const node&h)const{
        return x<h.x;
    }
};
vector<st>sum[1000006],cnt[1000006];
int dis[1000006];
bool flag[1000006];
void dij(int x){
    priority_queue<node>q;
    for(int i=1;i<=n;i++){
        dis[i]=INT_MAX;
        flag[i]=0;
    }
    dis[x]=0;
    flag[x]=1;
    q.push((node){x,0});
    while(q.empty()==0){
        int now=q.top().id;
        q.pop();
        for(int i=0;i<sum[now].size();i++){
            int tt=sum[now][i].step,id=sum[now][i].c;
            if(dis[id]>dis[now]+tt){
                dis[id]=dis[now]+tt;
                if(flag[id]==0){
                    flag[id]=1;
                    q.push((node){id,dis[id]});
                }
            }
        }
    }
} 
void dijs(int x){
    priority_queue<node>q;
    for(int i=1;i<=n;i++){
        dis[i]=INT_MAX;
        flag[i]=0;
    }
    dis[x]=0;
    flag[x]=1;
    q.push((node){x,0});
    while(q.empty()==0){
        int now=q.top().id;
        q.pop();
        for(int i=0;i<cnt[now].size();i++){
            int tt=cnt[now][i].step,id=cnt[now][i].c;
            if(dis[id]>dis[now]+tt){
                dis[id]=dis[now]+tt;
                if(flag[id]==0){
                    flag[id]=1;
                    q.push((node){id,dis[id]});
                }
            }
        }
    }
} 
signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    cin>>n>>m;
    for(int i=1;i<=m;i++){
        int u,v,w;
        cin>>u>>v>>w;
        sum[u].push_back((st){v,w});
        cnt[v].push_back((st){u,w});
    }
    dij(1);
    for(int i=1;i<=n;i++){
        ans+=dis[i];
    }
    dijs(1);
    for(int i=1;i<=n;i++){
        ans+=dis[i];
    }
    cout<<ans<<endl; 
    return 0;
}

by tzhengqing @ 2024-08-30 09:29:07

大早上的。。。


by hard_learn @ 2024-08-30 12:06:11

@tzhengqing 没事干,你帮我看一下


by hard_learn @ 2024-08-30 13:05:40

@saltfish


by djh456789123 @ 2024-12-04 23:59:23

你的djst中只能进一次,这是不太对的,如果一个点的刚开始在特别进了,但特远,后面根据其他点跳过来,他还要再能进,只是出来的时候保证一个点第一次出来最小


|