// Source: https://usaco.guide/general/io
#include <bits/stdc++.h>
#include <ios>
using namespace std;
#define int int64_t
vector<vector<int>> g , g2;
vector<int> c , l , vis , cs;
vector<bool> d;
stack<int> e;
int t = 0 , ci;
void dfs(int h , int p){
e.push(h);
l[h] = vis[h] = t++;
for(int x : g[h]){
if(x == p)continue;
if(vis[x] == -1){
dfs(x , h);
if(l[x] >= vis[h]){
d[h] = 1;
c[h] = h;
cs[h] = -1;
cs[ci]++;
g2[ci].push_back(h);
g2[h].push_back(ci);
while(1){
cs[ci]++;
if(!d[e.top()]){
c[e.top()] = ci;
}else{
g2[ci].push_back(e.top());
g2[e.top()].push_back(ci);
}
if(e.top() == x){
e.pop();
break;
}
e.pop();
}
ci++;
}
l[h] = min(l[h] , l[x]);
}else{
l[h] = min(l[h] , vis[x]);
}
}
}
vector<array<int , 20>> bl;
vector<int> u , z;
void bls(int h , int p){
if(p == -1){
u[h] = 0;
z[h] = cs[h];
}else{
u[h] = u[p]+1;
z[h] = cs[h] + z[p];
}
bl[h][0] = p;
for(int i = 1; i < 20; i++){
if(bl[h][i-1] == -1)bl[h][i] = -1;else bl[h][i] = bl[bl[h][i-1]][i-1];
}
for(int x : g2[h]){
if(x != p)bls(x , h);
}
}
int lca(int a , int b){
if(u[a] < u[b])swap(a , b);
for(int i = 19; i>=0; i--){
if((u[a]-u[b])&(1<<i))a = bl[a][i];
}
for(int i = 19; i>=0; i--){
if(bl[a][i] != bl[b][i]){
a = bl[a][i];
b = bl[b][i];
}
}
if(a==b)return a;
return bl[a][0];
}
int32_t main() {
ios_base::sync_with_stdio(0);
cout.tie(0);
int n , m , q; cin >> n >> m >> q;
ci = n;
g.resize(n);
g2.resize(2*n);
cs.resize(2*n);
bl.resize(2*n);
u.resize(2*n);
z.resize(2*n);
c.resize(n);
l.resize(n);
vis.resize(n , -1);
d.resize(n , 0);
for(int i = 0; i < m; i++){
int a , b; cin >> a >> b;a--;b--;
g[a].push_back(b);
g[b].push_back(a);
}
dfs(0 , -1);
bls(0 , -1);
for(int i = 0; i < q; i++){
int a , b; cin >> a >> b;a--;b--;
int w = lca(c[a] , c[b]);
cout << z[c[a]]+z[c[b]]-2*z[w]+cs[w]+d[a]+d[b]-2 << "\n";
}
}
Subtask | Sum | Test | Verdict | Time | Memory | ||
---|---|---|---|---|---|---|---|
subtask1 | 0/0 | ||||||
1 | Accepted | 1ms | 316 KiB | ||||
2 | Accepted | 119ms | 50860 KiB | ||||
subtask2 | 15/15 | ||||||
3 | Accepted | 2ms | 1004 KiB | ||||
4 | Accepted | 3ms | 1332 KiB | ||||
5 | Accepted | 6ms | 2868 KiB | ||||
6 | Accepted | 10ms | 5428 KiB | ||||
7 | Accepted | 50ms | 25520 KiB | ||||
8 | Accepted | 118ms | 50732 KiB | ||||
subtask3 | 15/15 | ||||||
9 | Accepted | 3ms | 820 KiB | ||||
10 | Accepted | 4ms | 1332 KiB | ||||
11 | Accepted | 7ms | 2612 KiB | ||||
12 | Accepted | 17ms | 5760 KiB | ||||
13 | Accepted | 85ms | 27644 KiB | ||||
14 | Accepted | 217ms | 54880 KiB | ||||
15 | Accepted | 437ms | 61520 KiB | ||||
subtask4 | 15/15 | ||||||
16 | Accepted | 4ms | 1332 KiB | ||||
17 | Accepted | 7ms | 2548 KiB | ||||
18 | Accepted | 13ms | 5428 KiB | ||||
19 | Accepted | 59ms | 25524 KiB | ||||
20 | Accepted | 136ms | 50924 KiB | ||||
subtask5 | 15/15 | ||||||
21 | Accepted | 1ms | 316 KiB | ||||
22 | Accepted | 1ms | 316 KiB | ||||
23 | Accepted | 2ms | 1076 KiB | ||||
24 | Accepted | 2ms | 564 KiB | ||||
25 | Accepted | 2ms | 820 KiB | ||||
26 | Accepted | 2ms | 820 KiB | ||||
subtask6 | 40/40 | ||||||
27 | Accepted | 1ms | 316 KiB | ||||
28 | Accepted | 128ms | 50728 KiB | ||||
29 | Accepted | 2ms | 1004 KiB | ||||
30 | Accepted | 3ms | 1332 KiB | ||||
31 | Accepted | 6ms | 2868 KiB | ||||
32 | Accepted | 10ms | 5428 KiB | ||||
33 | Accepted | 50ms | 25520 KiB | ||||
34 | Accepted | 118ms | 50732 KiB | ||||
35 | Accepted | 3ms | 820 KiB | ||||
36 | Accepted | 4ms | 1332 KiB | ||||
37 | Accepted | 7ms | 2612 KiB | ||||
38 | Accepted | 17ms | 5760 KiB | ||||
39 | Accepted | 85ms | 27644 KiB | ||||
40 | Accepted | 217ms | 54880 KiB | ||||
41 | Accepted | 437ms | 61520 KiB | ||||
42 | Accepted | 4ms | 1332 KiB | ||||
43 | Accepted | 7ms | 2548 KiB | ||||
44 | Accepted | 13ms | 5428 KiB | ||||
45 | Accepted | 59ms | 25524 KiB | ||||
46 | Accepted | 136ms | 50924 KiB | ||||
47 | Accepted | 1ms | 316 KiB | ||||
48 | Accepted | 1ms | 316 KiB | ||||
49 | Accepted | 2ms | 1076 KiB | ||||
50 | Accepted | 2ms | 564 KiB | ||||
51 | Accepted | 2ms | 820 KiB | ||||
52 | Accepted | 2ms | 820 KiB | ||||
53 | Accepted | 439ms | 61780 KiB | ||||
54 | Accepted | 4ms | 1332 KiB | ||||
55 | Accepted | 8ms | 2868 KiB | ||||
56 | Accepted | 27ms | 5492 KiB | ||||
57 | Accepted | 149ms | 25728 KiB | ||||
58 | Accepted | 85ms | 30752 KiB | ||||
59 | Accepted | 472ms | 64052 KiB | ||||
60 | Accepted | 308ms | 51372 KiB | ||||
61 | Accepted | 324ms | 51628 KiB | ||||
62 | Accepted | 305ms | 52044 KiB |