Submission #280443

#TimeUsernameProblemLanguageResultExecution timeMemory
280443CaroLindaSplit the Attractions (IOI19_split)C++14
0 / 100
93 ms12388 KiB
#include <bits/stdc++.h> #include "split.h" #define sz(x) (int)x.size() #define mkt make_tuple #define lp(i,a,b) for(int i = a ; i < b ; i++ ) #define ff first #define ss second #define eb emplace_back #define ll long long #define mk make_pair #define pii pair<int,int> #define debug printf #define all(x) x.begin(),x.end() const int MAXN = 1e5+10 ; using namespace std ; vector< vector<int> > adj ; vector<int> vec ; bool vis[MAXN] ; int sobra , curr ; void dfs(int x ) { vis[x] = true ; vec[x-1] = curr ; sobra-- ; for(auto e : adj[x]) if(!vis[e] && sobra > 0) dfs(e) ; } vector<int> find_split(int n , int a , int b , int c , vector<int> p ,vector<int> q ) { lp(i,0,n) vec.emplace_back(0) ; for(int i = 0 ; i <= n ; i++ ) adj.emplace_back( *(new vector<int>) ) ; for(int i = 0 ; i < sz(p) ; i++ ) adj[ p[i] ].emplace_back( q[i] ) , adj[ q[i] ].emplace_back(p[i]) ; int x = 1 ; lp(i,1,n+1) if( sz(adj[i]) < sz(adj[x]) ) x = i ; sobra = a ; curr = 1 ; dfs(x) ; sobra = b ; curr = 2 ; lp(i,1,n+1) if(!vis[i]) { dfs(i) ; break ; } lp(i,1,n+1) if(!vis[i]) vec[i-1] = 3 ; return vec ; }
#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...