제출 #431001

#제출 시각아이디문제언어결과실행 시간메모리
431001Blistering_Barnacles슈퍼트리 잇기 (IOI20_supertrees)C++14
0 / 100
10 ms13352 KiB
#include "supertrees.h" #include <vector> //apig's property //Happiness can be found, even in the darkest of times, if one only remembers to turn on the light //El Pueblo Unido Jamas Sera Vencido //The saddest thing about betrayal? is that it never comes from your enemies //Do or do not... there is no try //Billions of bilious blue blistering barnacles in a thundering typhoon! #include<bits/stdc++.h> #define fast ios_base::sync_with_stdio(0) , cin.tie(0) , cout.tie(0) #define F first #define S second #define pb push_back #define vll vector< ll > #define vi vector< int > #define pll pair< ll , ll > #define pi pair< int , int > #define all(s) s.begin() , s.end() #define sz(s) s.size() #define str string #define md ((s + e) / 2) #define mid ((l + r) / 2) #define msdp(dp) memset(dp , -1 , sizeof dp) #define mscl(dp) memset(dp , 0 , sizeof dp) #define C continue #define R return #define B break #define lx node * 2 #define rx node * 2 + 1 #define br(o) o ; break #define co(o) o ; continue using namespace std; typedef int ll; ll q, par[100005], a[555555] , b[555555], k, l, m, n, o, p; map < ll , ll > mp; vll adj[555555]; const ll mod = 1e9+7; str s; vector < vll > ans ; ll getpar(ll x){ R (x == par[x] ? x : par[x] = getpar(par[x])) ; } void mrg(ll x , ll y){ x = par[x] , y = par[y] ; if(x == y)R ; if(sz(adj[y]) > sz(adj[x]))swap(x , y) ; for(auto u : adj[y]){ adj[x].pb(u) ; } adj[y].clear() ; par[y] = x ; } int construct(vector<vector<int>> p) { n = sz(p) ; ans.resize(n) ; for(ll i = 0 ; i < n ; i++){ par[i] = i ; adj[i].pb(i) ; } for(ll i = 0 ; i < n ; i++){ ans[i].resize(n) ; for(ll j = i + 1 ; j < n ; j++){ if(p[i][j] == 2)mrg(i , j) ; } } for(ll i = 0 ; i < n ; i++){ for(ll j = i + 1 ; j < n ; j++){ ll o1 = getpar(i) , o2 = getpar(j) ; if(o1 == o2 && !p[i][j])R 0 ; } } for(ll i = 0 ; i < n ; i++){ if(par[i] != i)C ; if(sz(adj[i]) == 1)C ; m = sz(adj[i]) ; for(ll j = 0 ; j < m ; j++){ ll j1 = adj[i][j] ; ll j2 = adj[i][(j + 1) % m] ; ans[j1][j2] = ans[j2][j1] = 1 ; } } for(ll i = 0 ; i < n ; i++)ans[i][i] = 0 ; build(ans) ; R 1 ; }
#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...