dijkstra做的,不TLE,但全点WA,求助大佬

P1629 邮递员送信

判重边 + `0x3f3f3f3f3f3f3f3f`
by _xm_ @ 2023-11-20 01:13:30


@[_xm_](/user/821481) 是这样吗? ```cpp #include<bits/stdc++.h> using namespace std; typedef long long ll; #define P pair<ll,ll> #define w first #define s second const int N=5e5+5; ll dis[N]; ll g[2001][2001]; ll g2[2001][2001]; bool vis[N]; ll n,m; inline ll read() { ll ans=0,f=1; char x=getchar(); while(x<'0' || x>'9') { if(x=='-') f=-1; x=getchar(); } while(x>='0' && x<='9') { ans=(ans<<3)+(ans<<1)+x-'0'; x=getchar(); } return ans*f; } void ds(ll x) { memset(dis,0x3f3f3f3f3f3f3f3f,sizeof(dis)); memset(vis,0,sizeof(vis)); priority_queue<P,vector<P>,greater<P> > q; set<ll> s; dis[x]=0; q.push({0,x}); while(q.size()) { P cur=q.top(); q.pop(); if(vis[cur.s]) continue; vis[cur.s]=1; for(int i=1;i<=n;i++) { if(g[cur.s][i]!=0x3f3f3f3f3f3f3f3f) { if(dis[i]>g[cur.s][i]+cur.w) { dis[i]=g[cur.s][i]+cur.w; if(!s.count(i)) { q.push({dis[i],i}); s.insert(i); } } } } } } void ds2(ll x) { memset(dis,0x3f3f3f3f3f3f3f3f,sizeof(dis)); memset(vis,0,sizeof(vis)); priority_queue<P,vector<P>,greater<P> > q; dis[x]=0; set<ll> s; q.push({0,x}); while(q.size()) { P cur=q.top(); q.pop(); if(vis[cur.s]) continue; vis[cur.s]=1; for(int i=1;i<=n;i++) { if(g2[cur.s][i]!=0x3f3f3f3f3f3f3f3f) { if(dis[i]>g2[cur.s][i]+cur.w) { dis[i]=g2[cur.s][i]+cur.w; if(!s.count(i)) { q.push({dis[i],i}); s.insert(i); } } } } } } int main() { memset(g,0x3f3f3f3f3f3f3f3f,sizeof(g)); memset(g2,0x3f3f3f3f3f3f3f3f,sizeof(g2)); n=read(); m=read(); for(int i=1;i<=m;i++) { ll u,v,w; u=read(); v=read(); w=read(); g[u][v]=w; g2[v][u]=w; } ll ans=0; ds(1); for(int i=2;i<=n;i++) ans+=dis[i]; ds2(1); for(int i=2;i<=n;i++) ans+=dis[i]; printf("%d\n",ans); return 0; } ```
by Tanlun_np @ 2023-11-20 18:59:01


@[_xm_](/user/821481) 谢谢大佬,已AC
by Tanlun_np @ 2023-11-20 20:07:23


|