Codeforces Round #424 (Div. 1, rated, based on VK Cup Finals), problem: (E) Perpetual Motion Machine Solution In C/C++

#include <bits/stdc++.h>
using namespace std;

#define inf 1023456789
#define linf 1023456789123456789ll
#define pii pair<int,int>
#define pipii pair<int, pii >
#define pll pair<long long,long long>
#define vint vector<int>
#define vvint vector<vint >
#define ll long long
#define pdd pair<double, double>

//#define DEBUG
#ifdef DEBUG
#define db(x) cerr << #x << ” = ” << x << endl
#else
#define db(x)
#endif

vector<ll> value;
vector<bool> visited;
vvint sus;

vector<int> deg3, deg4;

int dfs(int node, int parent = -1)
{
if(visited[node]) return node;
visited[node] = 1;
if(sus[node].size() == 3) deg3.push_back(node);
if(sus[node].size() >= 4) deg4.push_back(node);
for(int i=0; i<sus[node].size(); i++)
{
if(sus[node][i] == parent)continue;
int ret = dfs(sus[node][i], node);
if(ret != -1)
{
if(ret == -2) return -2;
value[node] = 1;
if(ret == node) return -2;
return ret;
}
}
return -1;
}

bool mark3dfs(int node, int parent = -1)
{
if(parent != -1 && sus[node].size() >= 3)
{
value[node] = 2;
for(int i=0; i<sus[node].size(); i++) value[sus[node][i]] = 1;
return true;
}
for(int i=0; i<sus[node].size(); i++)
{
if(sus[node][i] == parent)continue;
if(mark3dfs(sus[node][i], node))
{
value[node] = 2;
return true;
}
}
return false;
}

int find_depth(int node, int parent)
{
for(int i=0; i<sus[node].size(); i++)
{
if(sus[node][i] == parent)continue;
return find_depth(sus[node][i], node) + 1;
}
return 1;
}

void color(int node, int parent, ll val, ll step)
{
val -= step;
if(val <= 0) return;
value[node] = val;
for(int i=0; i<sus[node].size(); i++)
{
if(sus[node][i] == parent)continue;
color(sus[node][i], node, val, step);
}
}

bool solve_component(int node)
{
deg3 = vint(0);
deg4 = vint(0);
if(dfs(node) == -2) return 1;
if(deg4.size() > 0)
{
int hub = deg4[0];
value[hub] = 2;
for(int i=0; i<4; i++)
{
value[sus[hub][i]] = 1;
}
return true;
}
if(deg3.size() >= 2)
{
for(int i=0; i<sus[deg3[0]].size(); i++)
{
value[sus[deg3[0]][i]] = 1;
}
mark3dfs(deg3[0]);
return true;
}
if(deg3.size() == 0)
{
return false;
}

int hub = deg3[0];
ll depth[3];
for(int i=0; i<3; i++)
{
depth[i] = min(6, 1+find_depth(sus[hub][i], hub));
}
if(depth[0] * depth[1] + depth[1] * depth[2] + depth[2] * depth[0] > depth[0]*depth[1]*depth[2])
{
return false;
}
value[hub] = 120000;
for(int i=0; i<3; i++)
{
color(sus[hub][i], hub, value[hub], (value[hub]-1)/depth[i]+1);
}
return true;
}

int main()
{
int t;
scanf(“%d”, &t);
for(int test = 0; test < t; test++)
{
int n, m;
scanf(“%d %d”, &n, &m);
sus = vector<vector<int> >(n);
for(int i=0; i<m; i++)
{
int a, b;
scanf(“%d %d”, &a, &b);
a–;
b–;
sus[a].push_back(b);
sus[b].push_back(a);
}
value = vector<ll>(n, 0);
visited = vector<bool>(n, 0);
bool solved = 0;
for(int i=0; i<n; i++)
{
if(!visited[i])
{
if(solve_component(i))
{
printf(“YES\n”);
for(int j=0; j<n; j++)
{
printf(“%d%c”, (int)(value[j]), ” \n”[j+1 == n]);
}
solved = 1;
break;
}
}
}
if(!solved)
{
printf(“NO\n”);
}
}
return 0;
}

BigBasket’s profitability plan; UnifyApps...

In the fast-paced world of Indian technology and e-commerce,...

Who Owns Shokz And...

If you have ever looked into purchasing a pair...

Filipino workers locked in...

A bitter labor dispute is unfolding in New Taipei...

‘Once in a lifetime’:...

Atlanta Fan Fest Erupts as FIFA World Cup Semifinalists...

Reject Modernity, Return to...

In an era dominated by high-level frameworks, drag-and-drop builders,...

Ten Years in the...

In the highly competitive and fast-paced world of online...

BigBasket’s profitability plan; UnifyApps eyes $100 million funding

In the fast-paced world of Indian technology and e-commerce, significant shifts are underway as major players reposition themselves for sustainability and growth. Today’s business...

Who Owns Shokz And Where Are The Headphones Made?

If you have ever looked into purchasing a pair of open-ear audio devices, chances are you have encountered the brand Shokz. Known for pioneering...

Filipino workers locked in bitter labor dispute with Taiwanese manufacturer

A bitter labor dispute is unfolding in New Taipei City, Taiwan, spotlighting the harsh realities faced by Southeast Asian migrant workers. Filipino laborers employed...

‘Once in a lifetime’: Fans celebrate FIFA World Cup semifinal berth at Atlanta Fan Fest

Atlanta Fan Fest Erupts as FIFA World Cup Semifinalists are Decided The energy in Atlanta reached a fever pitch as the FIFA World Cup quarterfinal...

Reject Modernity, Return to 80s, Learn C.

In an era dominated by high-level frameworks, drag-and-drop builders, and AI-assisted coding, a surprising trend is emerging among the youngest generation of tech enthusiasts....

Ten Years in the Making. Fxtrading.com Is Just Getting Started

In the highly competitive and fast-paced world of online financial markets, longevity is a true testament to trust, innovation, and adaptability. Celebrating a monumental...

Glyco Reset Drops Announces Launch of Digital Platform and Consumer Wellness Product Initiative GlycoReset Blood Sugar Support

Glyco Reset Drops Launches New Digital Platform and Wellness Initiative In an era where proactive health management is becoming increasingly vital, Glyco Reset Drops has...

“P—ed”: Colorado Senior Reveals Deion Sanders Locker Room Truth That Media Keeps From Fans

As the Big 12 media days kicked off, Colorado Buffaloes head coach Deion "Coach Prime" Sanders made headlines not just for his sharp look,...

All Blacks: Dave Rennie’s fast-paced style shines in thrilling France test

The recent clash between the All Blacks and France delivered a spectacular display of modern rugby, highlighting a tactical evolution that has fans and...