157212025-02-24 17:04:18TaxiradioÚtvonalakcpp17Hibás válasz 0/1001.101s32668 KiB
// 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(e.top() != h && l[e.top()] >= vis[h]){
                    cs[ci]++;
                    if(!d[e.top()]){
                        c[e.top()] = ci;
                    }else{
                        g2[ci].push_back(e.top());
                        g2[e.top()].push_back(ci);
                    }
                    e.pop();
                }
                ci++;
            }
            l[h] = min(l[h] , l[x]);
        }else{
            l[h] = min(l[h] , vis[x]);
        }
    }
}

int dfs2(int h , int v , int p , int e){
    v += cs[h];
    if(e == h)return v;
    for(int x : g2[h]){
        if(x == p)continue;
        int k = dfs2(x , v , h , e);
        if(k!= -1)return k;
    }
    return -1;
}


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);
    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);
    for(int i = 0; i < q; i++){
        int a , b; cin >> a >> b;a--;b--;
        cout << dfs2(c[a] , 0 , -1, c[b])+d[a]+d[b]-2 << "\n";
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
2Hibás válasz162ms16300 KiB
subtask20/15
3Hibás válasz2ms564 KiB
4Hibás válasz2ms564 KiB
5Elfogadva4ms1332 KiB
6Hibás válasz8ms2048 KiB
7Hibás válasz37ms8248 KiB
8Hibás válasz81ms16160 KiB
subtask30/15
9Elfogadva3ms564 KiB
10Elfogadva8ms820 KiB
11Elfogadva46ms1672 KiB
12Elfogadva178ms2356 KiB
13Időlimit túllépés1.1s10260 KiB
14Időlimit túllépés1.101s20460 KiB
15Időlimit túllépés1.085s32308 KiB
subtask40/15
16Hibás válasz4ms564 KiB
17Hibás válasz6ms1096 KiB
18Hibás válasz14ms1844 KiB
19Hibás válasz50ms8368 KiB
20Hibás válasz112ms16508 KiB
subtask50/15
21Hibás válasz1ms508 KiB
22Hibás válasz1ms316 KiB
23Elfogadva3ms564 KiB
24Hibás válasz1ms316 KiB
25Hibás válasz2ms568 KiB
26Hibás válasz2ms564 KiB
subtask60/40
27Elfogadva1ms316 KiB
28Hibás válasz179ms16420 KiB
29Hibás válasz2ms564 KiB
30Hibás válasz2ms564 KiB
31Elfogadva4ms1332 KiB
32Hibás válasz8ms2048 KiB
33Hibás válasz37ms8248 KiB
34Hibás válasz81ms16160 KiB
35Elfogadva3ms564 KiB
36Elfogadva8ms820 KiB
37Elfogadva46ms1672 KiB
38Elfogadva178ms2356 KiB
39Időlimit túllépés1.1s10260 KiB
40Időlimit túllépés1.101s20460 KiB
41Időlimit túllépés1.085s32308 KiB
42Hibás válasz4ms564 KiB
43Hibás válasz6ms1096 KiB
44Hibás válasz14ms1844 KiB
45Hibás válasz50ms8368 KiB
46Hibás válasz112ms16508 KiB
47Hibás válasz1ms508 KiB
48Hibás válasz1ms316 KiB
49Elfogadva3ms564 KiB
50Hibás válasz1ms316 KiB
51Hibás válasz2ms568 KiB
52Hibás válasz2ms564 KiB
53Időlimit túllépés1.088s31280 KiB
54Hibás válasz4ms564 KiB
55Elfogadva111ms1732 KiB
56Hibás válasz26ms2084 KiB
57Hibás válasz279ms8624 KiB
58Hibás válasz122ms9904 KiB
59Időlimit túllépés1.082s32668 KiB
60Hibás válasz268ms16812 KiB
61Időlimit túllépés1.088s16984 KiB
62Időlimit túllépés1.078s16484 KiB