# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
332124 | ruatin | Detecting Molecules (IOI16_molecules) | C++14 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "railroad.h"
#include <bits/stdc++.h>
#define forinc(i,a,b) for(int i=a;i<=b;++i)
#define fordec(i,a,b) for(int i=a;i>=b;--i)
#define all(a) a.begin(),a.end()
using namespace std;
const int N = 2e5+5;
int n, s[N], t[N];
int that[N], in[N], out[N], res;
struct DSU
{
int n;
vector<int> id;
DSU(int n) : n(n), id(n+1,-1) {}
int root(int u)
{
return id[u]<0 ? u : id[u]=root(id[u]);
}
bool join(int u,int v)
{
if((u=root(u))==(v=root(v)))
return 0;
if(id[u]>id[v])
swap(u,v);
id[u] += id[v];
id[v] = u;
return 1;
}