Submission #1031330

#TimeUsernameProblemLanguageResultExecution timeMemory
1031330hotboy2703Connecting Supertrees (IOI20_supertrees)C++17
56 / 100
140 ms24152 KiB
#include "supertrees.h" #include<bits/stdc++.h> using namespace std; using ll = int; #define pll pair <ll,ll> #define fi first #define se second #define MP make_pair #define sz(a) (ll((a).size())) #define BIT(mask,i) (((mask) >> (i))&1) #define MASK(i) (1LL<<(i)) namespace trung{ const ll MAXN = 1510; ll a[MAXN][MAXN]; bool in[MAXN]; ll cnt2[MAXN]; ll n; } int construct(std::vector<std::vector<int>> b){ using namespace trung; n=sz(b); for (ll i = 0;i < n;i ++)for (ll j = 0;j < n;j ++){ if (b[i][j] == 3)return 0; cnt2[i] += b[i][j] == 2; } vector <vector <ll> > res(n,vector <ll> (n)); for (ll i = 0;i < n;i ++){ if (in[i]==0){ queue <ll> q; q.push(i); in[i] = 1; vector <ll> all; while (!q.empty()){ ll u = q.front(); all.push_back(u); q.pop(); for (ll j = 0;j < n;j ++){ if (!in[j] && b[u][j]){in[j]=1;q.push(j);} } } for (auto x:all)for (auto y:all)if (b[x][y]==0)return 0; for (auto x:all)in[x] = 0; vector <vector <ll> > comp; for (auto x:all){ if (!in[x]){ in[x] = 1; q.push(x); vector <ll> tmp; while (!q.empty()){ ll u = q.front(); tmp.push_back(u); q.pop(); for (auto j:all){ if (!in[j] && b[u][j]==1){in[j]=1;q.push(j);} } } for (auto y:tmp){ for (auto z:tmp){ if (b[y][z] != 1)return 0; } } for (ll j = 0;j + 1 < sz(tmp);j ++){ res[tmp[j]][tmp[j+1]] = 1; res[tmp[j+1]][tmp[j]] = 1; } comp.push_back(tmp); } } if (sz(comp) > 1){ for (ll j = 0;j + 1 < sz(comp);j ++){ ll u = comp[j][0],v=comp[j+1][0]; res[u][v] = res[v][u] = 1; } ll u = comp[0][0],v=comp[sz(comp)-1][0]; res[u][v] = res[v][u] = 1; } } } build(res); 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...