# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1195826 | badge881 | Make them Meet (EGOI24_makethemmeet) | C++20 | 5 ms | 584 KiB |
#include <bits/stdc++.h>
using namespace std;
long long N, M;
vector<vector<int>> graph;
vector<vector<int>> matrix;
vector<int> p1, p2;
vector<int> vis;
void dfs(int n, int parity)
{
vis[n] = true;
for (auto go : graph[n])
{
if (vis[go])
continue;
if (parity)
{
p2[go] = p2[n];
}
else
{
p1[go] = p1[n];
}
dfs(go, 1 - parity);
}
}
int main()
{
scanf("%lld%lld", &N, &M);
graph.resize(N),
matrix.resize(N, vector<int>(N)),
p1.resize(N),
p2.resize(N),
vis.resize(N, false);
for (int i = 0; i < M; i++)
{
int a, b;
scanf("%d%d", &a, &b);
matrix[a][b] = 1;
matrix[b][a] = 1;
graph[a].push_back(b);
graph[b].push_back(a);
}
for (int i = 0; i < N; i++)
{
p1[i] = i + 1;
p2[i] = i + 1;
matrix[i][i] = 1;
}
int root = -1;
for (int i = 0; i < N; i++)
{
for (auto j : graph[i])
{
for (auto u : graph[j])
if (matrix[i][u] == 0)
{
p2[j] = p2[u] = p2[i];
vis[u] = true;
dfs(i, 0);
dfs(u, 0);
root = j;
break;
}
if (root != -1)
break;
}
if (root != -1)
break;
}
if (root == -1)
dfs(0, 0);
printf("600\n");
for (int i = 0; i < 300; i++)
{
for (int k = 0; k < N; k++)
printf("%d ", p2[k]);
printf("\n");
for (int k = 0; k < N; k++)
printf("%d ", p1[k]);
printf("\n");
}
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |