제출 #1139070

#제출 시각아이디문제언어결과실행 시간메모리
1139070ozner77새로운 문제 (POI13_luk)C++20
40 / 100
2100 ms196608 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back /* #include <ext/pb_ds/assoc_container.hpp> using namespace __gnu_pbds; using namespace std; #define ll long long #define pb push_back #define mp make_pair #define f first #define s second #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> indexed_set; typedef pair<ll,ll> pll; typedef pair<int,int> pii; typedef map<int,int> mii; typedef map<ll,ll> mll; bool com;*/ vector<bool> visited; ll dfs(ll nodo,ll m,vector<vector<ll>> adj){ ll res=m; for(auto x:adj[nodo]){ res+=dfs(x,m,adj)-1; } return min(res,0LL); } int main(){ ll n; cin>>n; visited.assign(n,false); vector<vector<ll>> adj(n); vector<vector<ll>> adj2(n); for(int i=0;i<n-1;i++){ ll a,b; cin >> a >> b; a--; b--; adj2[a].pb(b); adj2[b].pb(a); } ll l=0; ll r=n; queue<ll> q; q.push(0); while(!q.empty()){ ll nodo=q.front(); q.pop(); visited[nodo]=true; for(auto x:adj2[nodo]){ if(!visited[x]){ adj[nodo].pb(x); q.push(x); } } } while(l<r){ ll m=(l+r)/2; if(dfs(0,m,adj)==0){ r=m; }else{ l=m+1; } } cout<<l<<"\n"; } //GRANDE AGUUUUUUUUUUUUUUUUUUUS <3 //bue me mato
#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...