241562026-02-05 08:22:02abcdBarátnők (50 pont)cpp17Wrong answer 2/50252ms8664 KiB
#include <bits/stdc++.h>
using namespace std;
using pii=pair<int,int>;
using ll=long long;

const int maxn=50005,z=INT_MAX,M=1e9+7;
vector<int> dd(maxn+1,z),dn(maxn+1,z),cd(maxn+1),cn(maxn+1);
vector<pii> adj[maxn+1];

void dijkstra(set<pii>& s,vector<int>& d,vector<int>& c){
    while(!s.empty()){
        auto [vw,v]=*s.begin();
        s.erase(s.begin());
        if(vw!=d[v])continue;
        for(auto[to,w]:adj[v]){
            if(d[to]>d[v]+w) {
                d[to]=d[v]+w;
                c[to]=c[v];
                s.insert({d[to],to});  
            }else if(d[to]==d[v]+w) {
                c[to]+=c[v];
            }
        }
    }
}

int main(){
    int n,m;cin>>n>>m;
    for(int i=0;i<m;i++){
        int a,b,c;cin>>a>>b>>c;
        adj[a].push_back({b,c});
        adj[b].push_back({a,c});
    }
    int dor,nor;cin>>dor>>nor;
    set<pii> s;
    s.insert({0,dor});
    dd[dor]=0;dn[nor]=0;
    cd[dor]=1;cn[nor]=1;
    dijkstra(s,dd,cd);
    set<pii> s2;
    s2.insert({0,nor});
    dijkstra(s2,dn,cn);
    int x=dd[nor];
    ll ans=1LL*cd[nor]*cd[nor];
    ll no=0;
    for(int i=1;i<=n;i++){
        if(dd[i]==x/2&&dn[i]==x/2)
            no=(no+1LL*cd[i]*cn[i]%M*cd[i]*cn[i]%M)%M;
    }
    for(int u=1;u<=n;u++){
        for(auto [v,w]:adj[u]){
            if(dd[v]+w+dn[u]==x&&abs(dd[v]-dn[u])<=w)
                no=(no+1LL*cd[v]*cn[u]%M*cd[u]*cn[u]%M)%M;
        }
    }
    cout<<(abs(ans-no))%M<<'\n';
}
SubtaskSumTestVerdictTimeMemory
base2/50
1Accepted0/03ms2356 KiB
2Wrong answer0/0252ms8336 KiB
3Wrong answer0/24ms2356 KiB
4Wrong answer0/24ms2360 KiB
5Wrong answer0/23ms2356 KiB
6Wrong answer0/24ms2436 KiB
7Wrong answer0/24ms2356 KiB
8Accepted1/185ms4628 KiB
9Wrong answer0/2151ms8664 KiB
10Wrong answer0/2148ms6868 KiB
11Wrong answer0/2146ms6708 KiB
12Wrong answer0/2160ms7868 KiB
13Wrong answer0/2146ms6708 KiB
14Wrong answer0/2140ms6708 KiB
15Wrong answer0/2140ms6708 KiB
16Wrong answer0/1184ms7728 KiB
17Wrong answer0/1182ms7732 KiB
18Accepted1/186ms4916 KiB
19Wrong answer0/2190ms7988 KiB
20Wrong answer0/2177ms7740 KiB
21Wrong answer0/2180ms7736 KiB
22Wrong answer0/2180ms8292 KiB
23Wrong answer0/2192ms8244 KiB
24Wrong answer0/2168ms8500 KiB
25Wrong answer0/2152ms7716 KiB
26Wrong answer0/2164ms7696 KiB
27Wrong answer0/2181ms7732 KiB
28Wrong answer0/2179ms8424 KiB
29Wrong answer0/2177ms7692 KiB