Submission #456189

#TimeUsernameProblemLanguageResultExecution timeMemory
456189KhizriConnecting Supertrees (IOI20_supertrees)C++17
11 / 100
264 ms26108 KiB
#include "supertrees.h" #include <bits/stdc++.h> #include <vector> using namespace std; #define ll long long #define pb push_back #define F first #define S second #define INF 1e18 #define all(v) (v).begin(),(v).end() #define rall(v) (v).rbegin(),(v).rend() #define pii pair<int,int> #define pll pair<ll,ll> #define OK cout<<"Ok"<<endl; #define MOD (ll)(1e9+7) vector<std::vector<int>> ans; vector<std::vector<int>>arr; int color[1005],n,k,say,t; bool qq=false; void dfs(int u){ t=u; say++; color[u]=1; for(int i=0;i<n;i++){ if(u!=i&&arr[u][i]==2&&!color[i]){ ans[u][i]=1; ans[i][u]=1; dfs(i); } } } void dfs2(int u){ t=u; say++; color[u]=2; for(int i=0;i<n;i++){ if(u!=i&&arr[u][i]==1&&color[i]!=2){ ans[u][i]=1; ans[i][u]=1; dfs2(i); } } } int construct(std::vector<std::vector<int>> p) { arr=p; n = arr.size(); for (int i = 0; i < n; i++) { std::vector<int> row; row.resize(n); ans.push_back(row); } for(int i=0;i<n;i++){ if(!color[i]){ say=0; dfs(i); if(say>2){ ans[i][t]=1; ans[t][i]=1; } } } for(int i=0;i<n;i++){ if(color[i]!=2){ say=0; dfs2(i); } } build(ans); return 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...