90分求助,最后一个点WA

P2136 拉近距离

又改了一手,还是最后一个点wa ```cpp #include<bits/stdc++.h> #define ll long long using namespace std; inline ll read(){ ll x=0, f=1; char ch=getchar(); while(ch<'0' || ch>'9'){ if(ch == '-'){ f = -1; } ch = getchar(); } while(ch>='0' && ch<='9'){ x = x * 10 + ch - 48; ch = getchar(); } return x * f; } inline void write(ll x){ if(x < 0) putchar('-'), x = -x; if(x > 9) write(x/10); putchar(x%10+'0'); } struct edge{ ll to, dis, next; }; edge e[100086]; ll n, m, head[100086], u, v, w, tot, dis[100086], vis[100086], sla[100086], diss[100086], ans=0x7f7f7f, slaa[100086]; queue<ll> q; inline void add(ll u, ll v, ll w){ tot++; e[tot].next = head[u]; e[tot].dis = -w; e[tot].to = v; head[u] = tot; } inline void spfa_hong(ll s){ memset(diss, 0x7f7f, sizeof(dis)); memset(vis, 0, sizeof(vis)); q.push(s); diss[s] = 0; vis[s] = 1; while(!q.empty()){ int u = q.front(); vis[u] = false; q.pop(); for(int i=head[u];i;i=e[i].next){ int v = e[i].to; if(diss[v] > diss[u] + e[i].dis){ diss[v] = diss[u] + e[i].dis; slaa[e[i].to]++; if(!vis[v]){ q.push(v); vis[v] = 1; } if(slaa[e[i].to] > n){ cout<<"Forever love"; exit(0); } } } } } inline void spfa_ming(ll s){ memset(dis, 0x7f7f, sizeof(dis)); memset(vis, 0, sizeof(vis)); q.push(s); dis[s] = 0; vis[s] = 1; while(!q.empty()){ int u = q.front(); vis[u] = false; q.pop(); for(int i=head[u];i;i=e[i].next){ int v = e[i].to; if(dis[v] > dis[u] + e[i].dis){ dis[v] = dis[u] + e[i].dis; sla[e[i].to]++; if(!vis[v]){ q.push(v); vis[v] = 1; } if(sla[e[i].to] > n){ cout<<"Forever love"; exit(0); } } } } } int main(){ n = read(), m = read(); for(int i=1;i<=m;++i){ u = read(), v = read(), w = read(); add(u, v, w); } spfa_ming(1); spfa_hong(n); for(int i=1;i<=n;++i){ ans = min(ans, dis[i]+diss[i]); } cout<<ans; return 0; } ```
by Megumimwf @ 2023-02-11 11:50:42


我是真不想说你啊……
by djy070113 @ 2023-02-11 11:54:21


cout<<min(dis[1],diss[n])+min(0,max(dis[1],diss[n]))试试(
by Yoimiyamwf @ 2023-02-11 11:56:40


@[djy070113](/user/158023) ?
by 张恒灿 @ 2023-02-26 10:23:21


|