#include <bits/stdc++.h>
#define FastIO ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL)
typedef long long ll;
using namespace std;
const ll INF = ~(1LL << 63);
int main() {
FastIO;
ll i, N, M, capital, n1, n2, key;
vector<ll> edge(2);
queue<array<ll, 3>> q;
cin >> N >> M >> capital;
unordered_set<ll> ans(M);
vector<vector<ll>> G(N + 1);
vector<ll> dist(N + 1, INF);
for(i = 0; i < M; i++) {
cin >> n1 >> n2;
G[n1].push_back(n2);
G[n2].push_back(n1);
}
q.push({ capital, 0, 0 });
while(!q.empty()) {
array<ll, 3> cs = q.front();
q.pop();
if(dist[cs[0]] < cs[2])
continue;
dist[cs[0]] = cs[2];
if(cs[1]) {
edge[0] = cs[0];
edge[1] = cs[1];
sort(edge.begin(), edge.end());
key = edge[0] | (edge[1] << 32);
if(ans.find(key) != ans.end())
continue;
ans.insert(key);
}
for(const auto &x : G[cs[0]]) {
if(dist[x] > cs[2])
q.push({ x, cs[0], cs[2] + 1 });
}
}
cout << ans.size() << '\n';
for(const auto &x : ans)
cout << (x & ((1LL << 32) - 1)) << ' ' << (x >> 32) << '\n';
return 0;
}
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
base | 30/30 | ||||||
1 | Elfogadva | 0/0 | 3ms | 1828 KiB | |||
2 | Elfogadva | 0/0 | 136ms | 24732 KiB | |||
3 | Elfogadva | 1/1 | 3ms | 2352 KiB | |||
4 | Elfogadva | 1/1 | 3ms | 2436 KiB | |||
5 | Elfogadva | 1/1 | 3ms | 2472 KiB | |||
6 | Elfogadva | 1/1 | 3ms | 2552 KiB | |||
7 | Elfogadva | 1/1 | 3ms | 2768 KiB | |||
8 | Elfogadva | 1/1 | 3ms | 3040 KiB | |||
9 | Elfogadva | 2/2 | 3ms | 3208 KiB | |||
10 | Elfogadva | 2/2 | 4ms | 3268 KiB | |||
11 | Elfogadva | 2/2 | 4ms | 3264 KiB | |||
12 | Elfogadva | 2/2 | 12ms | 4788 KiB | |||
13 | Elfogadva | 2/2 | 26ms | 7492 KiB | |||
14 | Elfogadva | 2/2 | 111ms | 21944 KiB | |||
15 | Elfogadva | 1/1 | 150ms | 29340 KiB | |||
16 | Elfogadva | 1/1 | 122ms | 24844 KiB | |||
17 | Elfogadva | 2/2 | 165ms | 30992 KiB | |||
18 | Elfogadva | 2/2 | 152ms | 28552 KiB | |||
19 | Elfogadva | 2/2 | 174ms | 29748 KiB | |||
20 | Elfogadva | 2/2 | 160ms | 30760 KiB | |||
21 | Elfogadva | 2/2 | 168ms | 31748 KiB |