Submission #300662

#TimeUsernameProblemLanguageResultExecution timeMemory
300662KerimConnecting Supertrees (IOI20_supertrees)C++17
21 / 100
255 ms22140 KiB
#include "supertrees.h" #include "bits/stdc++.h" #define MAXN 100009 #define INF 1000000007 #define mp(x,y) make_pair(x,y) #define all(v) v.begin(),v.end() #define pb(x) push_back(x) #define wr cout<<"----------------"<<endl; #define ppb() pop_back() #define tr(ii,c) for(__typeof((c).begin()) ii=(c).begin();ii!=(c).end();ii++) #define ff first #define ss second #define my_little_dodge 46 #define debug(x) cerr<< #x <<" = "<< x<<endl; using namespace std; typedef long long ll; typedef pair<int,int> PII; template<class T>bool umin(T& a,T b){if(a>b){a=b;return 1;}return 0;} template<class T>bool umax(T& a,T b){if(a<b){a=b;return 1;}return 0;} int vis[MAXN]; int construct(std::vector<std::vector<int>> p) { int n = p.size(); std::vector<std::vector<int>> answer; for (int i = 0; i < n; i++) { std::vector<int> row; row.resize(n); answer.push_back(row); }int mx=0; for(int i=0;i<n;i++) for(int j=0;j<n;j++) umax(mx,p[i][j]); if(mx==0){ build(answer); return 1; } if(mx==1){ int cnt=0; for(int i=0;i<n;i++) if(!vis[i]){vis[i]=++cnt; for(int j=i+1;j<n;j++) if(!vis[j] and p[i][j]) answer[i][j]=answer[j][i]=1,vis[j]=cnt; } for(int i=0;i<n;i++) for(int j=0;j<n;j++) if(p[i][j] and vis[i]!=vis[j]) return 0; for(int i=0;i<n;i++) for(int j=0;j<n;j++) if(vis[i]==vis[j] and !p[i][j]) return 0; build(answer); return 1; } if(mx==2){ vector<int>cur;int cnt=0; for(int i=0;i<n;i++) if(!vis[i]){ cur.clear(); vis[i]=++cnt;cur.pb(i); for(int j=i+1;j<n;j++) if(!vis[j] and p[i][j]) vis[j]=cnt,cur.pb(j); for(int j=0;j<int(cur.size());j++) answer[cur[j]][cur[(j+1)%int(cur.size())]]=answer[cur[(j+1)%int(cur.size())]][cur[j]]=1; } for(int i=0;i<n;i++) for(int j=0;j<n;j++) if(p[i][j] and vis[i]!=vis[j]) return 0; for(int i=0;i<n;i++) for(int j=0;j<n;j++) if(vis[i]==vis[j] and !p[i][j]) return 0; build(answer); return 1; } return 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...