Submission #605031

#TimeUsernameProblemLanguageResultExecution timeMemory
605031HediChehaidarGame (IOI14_game)C++17
100 / 100
415 ms28256 KiB
#include<bits/stdc++.h> typedef long long ll; typedef unsigned long long ull; typedef long double ld; typedef double db; ll gcd(ll a , ll b) {return b ? gcd(b , a % b) : a ;} // greatest common divisor (PGCD) ll lcm(ll a , ll b) {return (a * b) / gcd(a , b);} // least common multiple (PPCM) #define ss second #define ff first #define all(x) (x).begin() , (x).end() #define pb push_back #define vi vector<int> #define vii vector<pair<int,int>> #define vl vector<ll> #define vll vector<pair<ll,ll>> #define pii pair<int,int> #define pll pair<ll,ll> #define pdd pair<double,double> #define vdd vector<pdd> #define dte tuple<double , double , double> using namespace std; const int INF = 1000*1000*1000; // 1 e 9 const int MOD = 1e9 + 7;//998244353 ; const double EPS = 0.000000001; // 1 e -9 const ll inf = (ll)2e18; int cur ; int g[2020][2020]; int nb[2020]; int n; set<int> s; int id[2020]; int ran[2020]; int getid(int x){ return id[x] == x ? x : id[x] = getid(id[x]); } void uni(int x , int y){ x = getid(x); y = getid(y); if(ran[x] > ran[y]) swap(x , y); ran[y] += ran[x]; for(int c = 0 ; c < n ; c++) g[y][c] = g[c][y] = g[c][y] + g[c][x]; for(int i = 0 ; i < n ; i++) g[x][i] = g[i][x] = 0; id[x] = y; } int hasEdge(int u, int v){ u = getid(u); v = getid(v); if(g[u][v] > 1){ g[u][v]--; g[v][u]--; return 0; } assert(g[u][v] == 1); g[u][v] = g[v][u] = 0; uni(u , v); return 1; } void initialize(int N){ n = N; for(int i = 0 ; i < n ; i++) { for(int j = 0 ; j < n ; j++){ g[i][j] = g[j][i] = 1; } } for(int i = 0 ; i < n ; i++) g[i][i] = 0; for(int i = 0 ; i < n ; i++) { id[i] = i; ran[i] = 1; } } /*int main(){ //ifstream fin ("testing.txt"); //ofstream fout ("output.txt"); ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); int n; cin>>n; initialize(n); for(int i = 0 ; i < (n * (n - 1)) / 2 ; i++){ int u , v; cin>>u>>v; cout<< hasEdge(u , v) << endl; } return 0; } */ /* Think of : BS / DFS / BFS / SSSP / SCC / MSP / MAX FLOW / TOPSORT / LCA / MATRIX / DP(bitmask) / 2 POINTERS / SEG TREE / MATH / UN FIND / MO / HLD Read the statement CAREFULLY !! Make a GREADY APPROACH !!!! (start from highest / lowest) Make your own TESTS !! Be careful from CORNER CASES ! */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...