제출 #1026348

#제출 시각아이디문제언어결과실행 시간메모리
1026348HD1슈퍼트리 잇기 (IOI20_supertrees)C++14
0 / 100
148 ms48876 KiB
#include "supertrees.h" #include<bits/stdc++.h> #define all(x) x.begin(),x.end() #define sz(x) ll(x.size()) #define pb push_back using namespace std; typedef long long ll; typedef pair<ll,ll> ii; const ll MAX=1e6; int f[MAX]; vector<int> adj[MAX]; int fiend(int u){ if(f[u] == u)return u; return f[u]=fiend(f[u]);// } void unir(int u,int v){ int x=fiend(u); int y=fiend(v); if(x!=y){ f[x]=y; } return; } int construct(vector<vector<int>> p) { int n = p.size(); for(int i=0; i<n; i++){ f[i]=i; } for(int i=0; i<n; i++){ for(int j=0; j<n; j++){ if(p[i][j]){ unir(i,j); } } } vector<vector<int>> gfo(n,vector<int>(n)); for(int i=0; i<n; i++){ fiend(f[i]); fiend(i); adj[f[i]].pb(i); } // for(int i=0; i<n; i++){ // for(auto v:adj[i]){ // cout<<v<<' '; // } // cout<<". "<<'\n'; // } //cout<<'\n'; for(int i=0; i<n; i++){ if(sz(adj[i])==0 || sz(adj[i])==1)continue; if(sz(adj[i])<3){ return 0; } for(int j=0; j<sz(adj[i]); j++){ //cout<<"whatsupp"<<adj[i][j]<<" "<<adj[i][(j+1)%sz(adj[i])] <<'\n'; gfo[adj[i][j]][adj[i][(j+1)%sz(adj[i])]]=1; gfo[adj[i][(j+1)%sz(adj[i])]][adj[i][j]]=1; } } build(gfo); return 1; } /* con fe 7 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 2 0 2 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 */
#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...