#include "worldmap.h"
#include <bits/stdc++.h>
//#include <cassert>
//#include <cstdio>
using namespace std;
vector < vector <int> > adj;
vector <bool> visited;
vector <int> v;
void bfs ( int u ) {
visited[u] = true;
for ( auto x : adj[u] ) {
if ( visited[x] == false ) {
v.push_back( x + 1 );
bfs( x );
v.push_back( u + 1 );
}
}
return;
}
vector < vector<int> > create_map ( int n, int m, vector <int> a, vector <int> b ) {
vector < vector <int> > answer;
adj.resize( n );
visited.resize( n );
for ( int i = 0; i < n; i++ ) {
adj[i].clear();
visited[i] = false;
}
v.clear();
for ( int i = 0; i < m; i++ ) {
a[i]--;
b[i]--;
adj[a[i]].push_back( b[i] );
adj[b[i]].push_back( a[i] );
}
if ( m == n - 1 ) {
v.push_back( 1 );
bfs( 0 );
for ( int i = 0; i < v.size(); i++ ) {
answer.push_back( v );
}
} else if ( m == n * ( n - 1 ) / 2 ) {
answer.resize( 2 * n );
for ( int i = 0; i < 2 * n; i++ ) {
int k = i % n;
for ( int j = 0; j < n; j++ ) {
answer[i].push_back( k + 1 );
answer[i].push_back( j + 1 );
}
}
} else if ( adj[0].size() == n - 1 ) {
answer.resize( 2 * n, vector <int> ( 2 * n, 1 ) );
bfs( 0 );
int k = 0;
for ( int i = 0; i < 2 * n; i += 2 ) {
for ( int j = 0; j < 2 * n; j += 2 ) {
if ( k >= v.size() ) {
break;
}
answer[j][i] = v[k];
answer[j + 1][i] = v[k + 1];
k += 2;
}
}
}
return answer;
}
/*int main() {
int T;
assert(1 == scanf("%d", &T));
std::vector<int> Nt(T), Mt(T);
std::vector<std::pair<std::vector<int>, std::vector<int>>> AB;
for (int t = 0; t < T; ++t) {
assert(2 == scanf("%d %d", &Nt[t], &Mt[t]));
int M = Mt[t];
std::vector<int> A(M), B(M);
for (int i = 0; i < Mt[t]; i++) {
assert(2 == scanf("%d %d", &A[i], &B[i]));
}
AB.push_back(make_pair(A, B));
}
fclose(stdin);
std::vector<std::vector<std::vector<int>>> Ct;
for (int t = 0; t < T; t++) {
int N = Nt[t], M = Mt[t];
std::vector<int> A = AB[t].first, B = AB[t].second;
auto C = create_map(N, M, A, B);
Ct.push_back(C);
}
for (int t = 0; t < T; t++) {
auto& C = Ct[t];
int P = (int)C.size();
std::vector<int> Q(P);
for (int i = 0; i < P; ++i)
Q[i] = (int)C[i].size();
printf("%d\n", P);
for (int i = 0; i < P; ++i)
printf("%d%c", Q[i], " \n"[i + 1 == P]);
printf("\n");
for (int i = 0; i < P; i++) {
for (int j = 0; j < Q[i]; j++) {
printf("%d%c", C[i][j], " \n"[j + 1 == Q[i]]);
}
}
if (t < T - 1)
printf("\n");
}
fclose(stdout);
return 0;
}*/
| # | 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... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |