155272025-02-20 10:53:05feheristvanKaktuszgráfcpp17Accepted 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;
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/01ms316 KiB
2Accepted0/01ms316 KiB
3Accepted2/22ms316 KiB
4Accepted2/21ms496 KiB
5Accepted2/22ms316 KiB
6Accepted2/22ms328 KiB
7Accepted2/21ms316 KiB
8Accepted2/22ms316 KiB
9Accepted2/22ms508 KiB
10Accepted2/22ms316 KiB
11Accepted2/22ms316 KiB
12Accepted2/22ms648 KiB
13Accepted2/22ms316 KiB
14Accepted2/22ms440 KiB
15Accepted2/22ms452 KiB
16Accepted2/22ms376 KiB
17Accepted2/22ms316 KiB
18Accepted2/22ms316 KiB
19Accepted3/32ms316 KiB
20Accepted3/32ms452 KiB
21Accepted3/32ms316 KiB
22Accepted3/32ms316 KiB
23Accepted3/32ms316 KiB
24Accepted3/31ms316 KiB