제출 #1168260

#제출 시각아이디문제언어결과실행 시간메모리
1168260ghammazhassan새로운 문제 (POI13_luk)C++20
60 / 100
2097 ms39192 KiB
// #include <bits/stdc++.h> #include <iostream> #include <cmath> #include <algorithm> #include <map> #include <vector> #include <iomanip> #include <string> #include <queue> #include <set> #include <deque> using namespace std; #define int long long #define fi first #define se second const int N=3e5+5; const int M=1e9+7; const int LOG = 20; int n , m , k , c , d , t=1 , q=1 , x , y , p[N] , l , r; vector<vector<int>>a(N); int bp(int x,int y){ x=x%M; if (y==0)return 1; if (y==1)return x; int r=bp(x*x,y/2); if (y%2)r*=x; r%=M; return r; } int inv(int x){ return bp(x,M-2); } void solve() { cin >> n; for (int i=0;i<n-1;i++){ cin >> x >> y; a[x].push_back(y); a[y].push_back(x); } vector<int>vi(n+1); vector<int>ch(n+1); vector<int>di(n+1); vector<int>d(n+1); queue<int>o; o.push(1); vi[1]=1; p[1]=1; vector<int>dy; while (!o.empty()){ int h=o.front(); o.pop(); for (int i:a[h]){ if (vi[i])continue; vi[i]=1; ch[h]++; p[i]=h; d[i]=d[h]+1; o.push(i); } } int l=1; int h=n-1; int m=(l+h)/2; while (l<h){ vector<int>dp(n+1,m); bool f=1; vector<int>vi(n+1); o.push(1); vi[1]=1; while (!o.empty()){ int h=o.front(); o.pop(); dp[h]-=ch[h]; for (int i:a[h]){ if (vi[i])continue; vi[i]=1; o.push(i); } } vector<int>k; for (int i=1;i<=n;i++){ if (ch[i]==0)k.push_back(i); } for (int i:k){ x=i; while (x!=1){ if (dp[x]<0){ dp[p[x]]+=dp[x]; dp[x]=0; } x=p[x]; } } // for (int i=1;i<=n;i++){ // cout << dp[i] << " "; // } if (dp[1]<0){ l=m+1; } else{ h=m; } m=(l+h)/2; } cout << m << endl; } signed main() { ios::sync_with_stdio(0);//DO NOT USE IN INTERACTIVE cin.tie(0), cout.tie(0);//DO NOT USE IN INTERACTIVE cout << fixed<<setprecision(9); // int t=1; // cin >> t; for (int _=1;_<=t;_++){ solve(); q++; } }
#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...