제출 #950597

#제출 시각아이디문제언어결과실행 시간메모리
950597NexusTwo Currencies (JOI23_currencies)C++17
10 / 100
159 ms192964 KiB
#include <bits/stdc++.h> #define ll long long using namespace std; const ll N=2e3+9,M=2e18+9,mod=1e9+7; ll a[N],b[N],n,m,q,s,t,x,y,z; vector<ll>v[N],ed[N][N],p; void dfs(ll node,ll ca) { if(node==t) { z=1; return; } for(auto i:v[node]) if(i!=ca) { ll g=p.size(); for(auto j:ed[node][i])p.push_back(j); dfs(i,node); if(z)return; ll k=g+ed[node][i].size(); for(ll j=g;j<k;++j)p[j]=0; } } ll ans() { p.clear(); z=0; dfs(s,s); sort(p.begin(),p.end()); n=p.size(); for(ll i=0;i<n;++i) { if(p[i]<=y)y-=p[i]; else { x-=p.size()-i; break; } } if(x>=0)return x; return -1; } int main() { ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); cin>>n>>m>>q; for(ll i=1;i<n;++i) { cin>>a[i]>>b[i]; v[a[i]].push_back(b[i]); v[b[i]].push_back(a[i]); } for(ll i=0;i<m;++i) { cin>>x>>y; ed[a[x]][b[x]].push_back(y); ed[b[x]][a[x]].push_back(y); } while(q--) { cin>>s>>t>>x>>y; cout<<ans()<<'\n'; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...