제출 #1349277

#제출 시각아이디문제언어결과실행 시간메모리
1349277bananacookieConstruction Project 2 (JOI24_ho_t2)C++17
16 / 100
2094 ms5396 KiB
#include <bits/stdc++.h>
using namespace std;
#define endl '\n'

using ll=long long;
using pli=pair<ll,int>;
const int N=2e5+5;
const ll INF=1e18;
vector<pair<int,ll>> adj[N];
ll dist[N],L,K;
int n,m,S,T;

void dstra(int s,int U,int V){
    adj[U].push_back({V,L}); adj[V].push_back({U,L});

    for(int i=1;i<=n;i++){
        dist[i]=INF;
    }
    priority_queue<pli,vector<pli>,greater<pli>> pq;
    dist[s]=0; pq.push({dist[s],s});
    while(!pq.empty())
    {
        auto [d,u]=pq.top(); pq.pop();

        if(d!=dist[u]) continue;

        for(auto [v,w]:adj[u]){
            if(dist[u]+w<dist[v]){
                dist[v]=dist[u]+w;
                pq.push({dist[v],v});
            }
        }
    }

    adj[U].pop_back(); adj[V].pop_back();
}

int main(){
    ios::sync_with_stdio(false); cin.tie(0);

    cin>>n>>m>>S>>T>>L>>K;
    for(int i=0;i<m;i++){
        int u,v; ll w; cin>>u>>v>>w;
        adj[u].push_back({v,w});
        adj[v].push_back({u,w});
    }

    int cnt=0;
    for(int i=1;i<n;i++){
        for(int j=i+1;j<=n;j++){
            dstra(S,i,j);
            if(dist[T]<=K) cnt++;
        }
    }

    cout<<cnt<<endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...