155272025-02-20 10:53:05feheristvanKaktuszgráfcpp17Elfogadva 50/502ms648 KiB
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

const int MAXN = 1001;

vector<int> graph[MAXN];
vector<int> parent(MAXN, -1);
vector<int> depth(MAXN, 0);
vector<bool> visited(MAXN, false);
int max_cycle_length = 0;

void dfs(int node, int par) {
    visited[node] = true;

    for (int neighbor : graph[node]) {
        if (neighbor == par) continue;  // Szülőbe visszalépés ignorálása
        if (!visited[neighbor]) {
            parent[neighbor] = node;
            depth[neighbor] = depth[node] + 1;
            dfs(neighbor, node);
        } else if (depth[node] > depth[neighbor]) {
            // Kör található, számoljuk ki a hosszát
            int cycle_length = depth[node] - depth[neighbor] + 1;
            max_cycle_length = max(max_cycle_length, cycle_length);
        }
    }
}

int main() {
    int N, M;
    cin >> N >> M;

    for (int i = 0; i < M; i++) {
        int A, B;
        cin >> A >> B;
        graph[A].push_back(B);
        graph[B].push_back(A);
    }

    // Minden komponensre elindítjuk a DFS-t
    for (int i = 1; i <= N; i++) {
        if (!visited[i]) {
            dfs(i, -1);
        }
    }

    cout << max_cycle_length << endl;
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms316 KiB
3Elfogadva2/22ms316 KiB
4Elfogadva2/21ms496 KiB
5Elfogadva2/22ms316 KiB
6Elfogadva2/22ms328 KiB
7Elfogadva2/21ms316 KiB
8Elfogadva2/22ms316 KiB
9Elfogadva2/22ms508 KiB
10Elfogadva2/22ms316 KiB
11Elfogadva2/22ms316 KiB
12Elfogadva2/22ms648 KiB
13Elfogadva2/22ms316 KiB
14Elfogadva2/22ms440 KiB
15Elfogadva2/22ms452 KiB
16Elfogadva2/22ms376 KiB
17Elfogadva2/22ms316 KiB
18Elfogadva2/22ms316 KiB
19Elfogadva3/32ms316 KiB
20Elfogadva3/32ms452 KiB
21Elfogadva3/32ms316 KiB
22Elfogadva3/32ms316 KiB
23Elfogadva3/32ms316 KiB
24Elfogadva3/31ms316 KiB