#include <bits/stdc++.h>
#define ll long long
#define fi first
#define se second
#define sz(x) (int)x.size()
#define ALL(v) v.begin(), v.end()
#define MASK(k) (1LL << (k))
#define BIT(x, i) (((x) >> (i)) & 1)
#define INF (ll)1e9
#define oo (ll)1e18
#define MOD (ll)(1e9 + 7)
#include "game.h"
using namespace std;
template<class T1, class T2>
bool maximize(T1 &a, T2 b){if(a < b){a = b; return true;} return false;}
template<class T1, class T2>
bool minimize(T1 &a, T2 b){if(a > b){a = b; return true;} return false;}
template<class T1, class T2>
void add(T1 &a, T2 b){a += b; if(a >= MOD) a -= MOD;}
template<class T1, class T2>
void sub(T1 &a, T2 b){a -= b; if(a < 0) a += MOD;}
template<class T>
void cps(T &v){sort(ALL(v)); v.resize(unique(ALL(v)) - v.begin());}
void print(vector<pair<int, int>> v){
for(auto x: v) cout << x.first << ' ' << x.second << '\n';
}
int fastPow(int a, int n){
int ans = 1;
while(n){
if(n & 1) ans = 1LL * ans * a % MOD;
a = 1LL * a * a % MOD;
n >>= 1;
}
return ans;
}
ll solve(){
return 0;
}
const int MAX = 1503;
int n;
int par[MAX];
int Sz[MAX];
int cnt[MAX][MAX];
int root(int u){
return u == par[u] ? u : par[u] = root(par[u]);
}
void initialize(int _n){
n = _n;
for(int i = 1; i <= n; i++){
par[i] = i;
Sz[i] = 1;
}
}
int hasEdge(int u, int v){
u = root(u);
v = root(v);
if(Sz[u] * Sz[v] - 1 > cnt[u][v]){
cnt[u][v]++;
cnt[v][u]++;
return 0;
}
if(Sz[u] < Sz[v]) swap(u, v);
for(int i = 1; i <= n; i++){
int p = root(i);
if(p == i && p != u && p != v){
cnt[u][p] += cnt[v][p];
cnt[p][u] += cnt[v][p];
}
}
Sz[u] += Sz[v];
par[v] = u;
return 1;
}
//int main(){
// ios_base::sync_with_stdio(0); cin.tie(0);
//
// int t = 1;
//// cin >> t;
// while(t--){
// solve();
//// cout << solve() << '\n';
// }
//
// return 0;
//}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |