Submission #1304432

#TimeUsernameProblemLanguageResultExecution timeMemory
1304432the_ZHERDrivers (BOI24_drivers)C++20
0 / 100
2 ms572 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define pb push_back mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); const int N=2e5+10; const int inf=1e18; const int mod=1e9+7; struct edge{ int x,y,w; }; vector<pair<int,int> >v[N]; vector<edge>v1; int pr[N]; int pw[30]; bool cmp(edge a,edge b){ return a.w<b.w; } int get(int x){ if(pr[x]==x){ return x; } return pr[x]=get(pr[x]); } void unio(int x,int y){ int a=get(x); int b=get(y); if(a==b){ return; } pr[a]=b; } int in[N],out[N]; int up[N][20]; int mn[N][20]; int cnt[N]; int tim=1; void dfs(int n,int pr,int z){ up[n][0]=pr; mn[n][0]=z; in[n]=tim; tim++; for(int i=1;i<20;i++){ up[n][i]=up[up[n][i-1]][i-1]; mn[n][i]=max(mn[n][i-1],mn[up[n][i-1]][i-1]); } for(int i=0;i<v[n].size();i++){ if(v[n][i].first!=pr){ dfs(v[n][i].first,n,v[n][i].second); } } out[n]=tim; } int ch(int x,int y){ if(in[x]<=in[y]&&out[x]>=out[y]){ return 1; } return 0; } int solve(int x,int pr){ if(x==pr){ return 0; } int ans=0; for(int i=19;i>=0;i--){ if(!ch(up[x][i],pr)){ ans=max(ans,mn[x][i]); x=up[x][i]; } } return max(ans,mn[x][0]); } int f(int x,int y){ if(ch(x,y)==1){ return solve(y,x); } if(ch(y,x)==1){ return solve(x,y); } for(int i=19;i>=0;i--){ if(ch(up[x][i],y)==1){ x=up[x][i]; } } int c=up[x][0]; return max(solve(x,c),solve(y,c)); } signed main() { ios_base::sync_with_stdio(NULL); cin.tie(nullptr); int n,m,u; cin>>n>>m>>u; for(int i=1;i<=m;i++){ int x,y,w; cin>>x>>y>>w; v1.push_back({x,y,w}); } for(int i=1;i<=n;i++){ pr[i]=i; } sort(v1.begin(),v1.end(),cmp); for(int i=0;i<v1.size();i++){ int x=get(v1[i].x); int y=get(v1[i].y); if(x!=y){ unio(v1[i].x,v1[i].y); v[v1[i].x].push_back({v1[i].y,v1[i].w}); v[v1[i].y].push_back({v1[i].x,v1[i].w}); } } dfs(1,0,0); for(int i=1;i<=u;i++){ int x,y,p; cin>>x>>y>>p; if(get(x)!=get(y)){ cout<<"NE\n"; continue; } int ans=f(x,y); if(ans<=p){ cout<<"TAIP\n"; }else{ cout<<"NE\n"; } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...