| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1315432 | ezzzay | World Map (IOI25_worldmap) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
#define pb push_back
vector<int> adj[50];
vector<int> rt;
map<pair<int,int>, bool> vis;
void dfs(int a, int p){
vis[{a,p}] = 1;
vis[{p,a}] = 1;
for (auto b : adj[a]) {
if (vis[{a,b}]) continue;
rt.pb(a);
dfs(b, a);
}
rt.pb(a);
}
std::vector<std::vector<int>> create_map(int N, int M, std::vector<int> A, std::vector<int> B) {
vis.clear();
for (int i = 1; i <= N; i++) adj[i].clear();
for (int i = 0; i < M; i++) {
adj[A[i]].pb(B[i]);
adj[B[i]].pb(A[i]);
}
rt.clear();
// Start DFS from node 1 (as in your template). If graph is disconnected,
// this will only traverse the component containing 1.
dfs(1, 0);
int h = rt.size();
vector<vector<int>> v(h, vector<int>(h));
for (int i = 0; i < h; i++) {
for (int j = 0; j < h; j++) {
v[i][j] = v[j][i] = rt[i];
}
}
return v;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int T;
if (!(cin >> T)) return 0;
for (int tc = 0; tc < T; ++tc) {
int N, M;
cin >> N >> M;
vector<int> A(M), B(M);
for (int i = 0; i < M; ++i) cin >> A[i] >> B[i];
auto C = create_map(N, M, A, B);
int P = (int)C.size();
cout << P << "\n";
// print row lengths Q[0] Q[1] ... Q[P-1]
for (int i = 0; i < P; ++i) {
if (i) cout << " ";
cout << (int)C[i].size();
}
cout << "\n\n"; // blank line as in output format
for (int i = 0; i < P; ++i) {
for (int j = 0; j < (int)C[i].size(); ++j) {
if (j) cout << " ";
cout << C[i][j];
}
cout << "\n";
}
if (tc + 1 < T) cout << "\n";
}
return 0;
}
