#include "supertrees.h"
#include<bits/stdc++.h>
#define pb push_back
#define F first
#define S second
#define str string
#define ll long long
#define ull unsigned ll
#define ld long double
#define pll pair<ll,ll>
#define plll pair<ll,pll>
#define pllll pair<pll,pll>
#define pii pair<int,int>
#define vl vector<ll>
#define vll vector<pll>
#define vlll vector<plll>
#define vllll vector<p4>
#define vi vector<int>
#define vii vector<pii>
#define sz(x) (ll)(x).size()
#define fr front()
#define tp top()
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define ins insert
#define m_p make_pair
#pragma GCC target( "sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#pragma GCC optimize("Ofast,unroll-loops,fast-math,O3")
using namespace std;
const ld pi=acos(-1.0);
const ll e5=1e5, e6=1e6, e9=1e9;
const ll inf=1e18;
const ll mod=998244353;
const ll MOD=106710087877475399;
const ll N=1e3+10;
const ll M=2e5+10;
const ld eps=1e-9;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
ll bpm(ll x,ll y,ll m){if(y==0)return 1%m;ll p=bpm(x,y/2,m);
if(y%2==0)return p*p%m;else return p*p%m*x%m;}
ll bp(ll x,ll y){if(y==0)return 1;ll p=bp(x,y/2);
if(y%2==0)return p*p;else return p*p*x;}
bool u[N];
vl g[N],v1;
vector<vl> v2;
void dfs(ll v){
u[v]=1;
v1.pb(v);
for(ll to:g[v]) if(!u[to]) dfs(to);
}
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++) {
vector<int> row(n,0);
answer.push_back(row);
}
for(ll i=0;i<n;i++){
for(ll j=0;j<n;j++){
if(p[i][j]!=0) g[i].pb(j);
if(p[i][j]==3) return 0;
}
}
for(ll i=0;i<n;i++){
if(u[i]) continue;
v1.clear();
dfs(i);
for(ll x:v1){
for(ll y:v1){
if(p[x][y]==0) return 0;
}
}
v2.pb(v1);
}
for(ll i=0;i<n;i++) g[i].clear(), u[i]=0;
for(ll i=0;i<n;i++){
for(ll j=0;j<n;j++){
if(p[i][j]==1) g[i].pb(j);
}
}
for(ll i=0;i<sz(v2);i++){
vl vt;
for(ll j:v2[i]){
if(u[j]) continue;
v1.clear();
dfs(j);
for(ll x:v1){
for(ll y:v1){
if(p[x][y]!=1) return 0;
}
}
for(ll k=1;k<sz(v1);k++) answer[v1[k-1]][v1[k]]=answer[v1[k]][v1[k-1]]=1;
vt.pb(v1[0]);
}
ll s=sz(vt);
if(s>2){
for(ll j=0;j+1<sz(vt);j++) answer[vt[j]][vt[j+1]]=answer[vt[j+1]][vt[j]]=1;
answer[vt[0]][vt[s-1]]=answer[vt[s-1]][vt[0]]=1;
}else if(s==2) return 0;
}
build(answer);
return 1;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |