#include <bits/stdc++.h>
using namespace std;
#define all(x) x.begin(), x.end()
#define mod 1000000007
#define sp << " " <<
#define endl << '\n'
long long int 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(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> 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;
cin >> 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];
p1[i] = p1[j];
vis[u] = true;
vis[j] = true;
dfs(i, 0);
dfs(u, 0);
dfs(j, 1);
root = j;
break;
}
}
if (root != -1)
break;
}
if (root != -1)
break;
}
if (root == -1)
dfs(0, 0);
cout << 600 endl;
for (int i = 0; i < 300; i++){
for (int k = 0; k < N; k++) cout << p2[k] sp "";
cout endl;
for (int k = 0; k < N; k++) cout << p1[k] sp "";
cout endl;
}
}
# | 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... |