176132025-08-09 16:27:30BucsMateKaktuszgráfcpp17Accepted 50/502ms512 KiB
#include <iostream>
#include <vector>

using namespace std;

int maxLength = 0;

vector<vector<int>> adj;
vector<bool> visited;
vector<int> depth;

void dfs(int currNode)
{
    for(int newNode : adj[currNode]){
        if(visited[newNode]){
            maxLength = max(maxLength, depth[currNode] - depth[newNode] + 1);
        }
        else{
            depth[newNode] = depth[currNode] + 1;
            visited[newNode] = true;
            dfs(newNode);
        }
    }
}

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

    adj.resize(N+1);
    visited.assign(N+1, false);
    depth.assign(N+1, 0);

    for(int i = 0; i < M; ++i){
        int a, b;
        cin >> a >> b;
        adj[a].push_back(b);
        adj[b].push_back(a);
    }

    for(int i = 1; i <= N; i++){
        if(!visited[i]){
            visited[i] = true;
            dfs(i);
        }
    }
    cout << maxLength;
    return 0;
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/01ms316 KiB
2Accepted0/01ms316 KiB
3Accepted2/22ms440 KiB
4Accepted2/22ms316 KiB
5Accepted2/22ms316 KiB
6Accepted2/22ms316 KiB
7Accepted2/22ms316 KiB
8Accepted2/22ms316 KiB
9Accepted2/22ms316 KiB
10Accepted2/22ms316 KiB
11Accepted2/22ms412 KiB
12Accepted2/22ms316 KiB
13Accepted2/22ms472 KiB
14Accepted2/22ms316 KiB
15Accepted2/22ms316 KiB
16Accepted2/22ms316 KiB
17Accepted2/22ms512 KiB
18Accepted2/22ms316 KiB
19Accepted3/32ms316 KiB
20Accepted3/32ms316 KiB
21Accepted3/32ms464 KiB
22Accepted3/32ms408 KiB
23Accepted3/32ms316 KiB
24Accepted3/32ms316 KiB