제출 #505073

#제출 시각아이디문제언어결과실행 시간메모리
505073tgbegimx무제 (POI11_dyn)C++17
100 / 100
1341 ms37856 KiB
#include <bits/stdc++.h> #define fast ios_base::sync_with_stdio(0) ; cin.tie(0);cout.tie(0) #define ll long long #define foru(i,l,r) for(int i=l;i<=r;++i) #define ford(i,l,r) for(int i=l;i>=r;--i) #define pb push_back using namespace std; const int N=3e5+10; vector<int> d; vector<vector<int>> ke; int dp[N],dem,kt[N]; int n,m; int read() { int s=0,f=1; char ch=getchar(); for(;ch<'0'||ch>'9';f=(ch=='-')?-1:f,ch=getchar()); for(;ch>='0'&&ch<='9';s=s*10+(ch^48),ch=getchar()); return s*f; } void dfs(int k,int u,int fa) { int mx1=-1e9,mx2=-1e9; if(d[u]) mx1=0; //if(k>m) return; for(auto v:ke[u]) { if(v==fa) continue; //cout<<v<<' '; dfs(k,v,u); if(kt[v]==1) mx1=max(mx1,dp[v]+1); if(kt[v]==2) mx2=max(mx2,dp[v]-1); if(kt[v]==-1||dem>m) {kt[u]==-1;return;} } if(mx1>mx2) { if(mx1>=k) { ++dem; kt[u]=2; dp[u]=k; if(dem>m) {kt[u]=-1;return;} } else kt[u]=1,dp[u]=mx1; } else kt[u]=2,dp[u]=mx2; } bool check(int k) { dem=0; dfs(k,1,1); if(kt[1]==-1) return 0; if(kt[1]==1&&dp[1]>=0) ++dem; return dem<=m; } void solve() { n=read(),m=read(); d.resize(n+1); ke.resize(n+1); foru(i,1,n) d[i]=read(); foru(i,1,n-1) { int u,v; u=read(),v=read(); ke[u].pb(v); ke[v].pb(u); } //for(auto v:ke[5]) cout<<v<<' '; int l=0,r=n,ans=0; while(l<=r) { int mid=(l+r)>>1; if(check(mid)) ans=mid,r=mid-1; else l=mid+1; } printf("%d",ans); } int main() { //freopen("main.inp","r",stdin); //freopen("main.out","w",stdout); //fast; solve(); }

컴파일 시 표준 에러 (stderr) 메시지

dyn.cpp: In function 'void dfs(int, int, int)':
dyn.cpp:33:36: warning: statement has no effect [-Wunused-value]
   33 |         if(kt[v]==-1||dem>m) {kt[u]==-1;return;}
      |                               ~~~~~^~~~
#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...
#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...