# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
980219 | nextgenxing | Thousands Islands (IOI22_islands) | C++17 | 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 <bits/stdc++.h>
#include <variant>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
#define F0R(i, n) for(int i = 0; i < (n); i++)
#define FOR(i, a, b) for(int i = (a); i < (b); i++)
#define F0Rd(i, n) for(int i = (n)-1; i >= 0; i--)
#define FORd(i, a, b) for(int i = (b)-1; i >= (a); i--)
#define ff first
#define ss second
const int MAX_N = 2e5+5;
const ll MOD = 1e9+7;
vector<pii> adj[MAX_N];
bool dfs(int curr, int par, vector<int> &path){
if(!adj[curr].size()) return false;
if(curr){
if(adj[curr].size() == 1) return false;
if(adj[curr].size() > 2){
if(adj[curr][0].ff == par){
path.push_back(adj[curr][1].ss), path.push_back(adj[curr][1].ss^1);
path.push_back(adj[curr][2].ss), path.push_back(adj[curr][2].ss^1);
path.push_back(adj[curr][1].ss^1), path.push_back(adj[curr][1].ss);
path.push_back(adj[curr][2].ss^1), path.push_back(adj[curr][2].ss);
} else if(adj[curr][1].ff == par){
path.push_back(adj[curr][0].ss), path.push_back(adj[curr][0].ss^1);