제출 #666998

#제출 시각아이디문제언어결과실행 시간메모리
666998KenparCijanobakterije (COCI21_cijanobakterije)C++17
70 / 70
52 ms14156 KiB
#include "bits/stdc++.h"
using namespace std;

#define ll long long
#define endl '\n'

const ll MOD = 1e9+7;
const ll INF = 1e18;
const ll MAX = 1e5;

vector<vector<int>> edges(MAX);

vector<bool>  visited(MAX, false);
stack<int> recVisited;

int getLengthChild(int cur){
	if(visited[cur]) return 0;

	visited[cur] = true;

	int ans = 0;

	for(int tar : edges[cur]){
		ans = max(ans, getLengthChild(tar));
	}

	return ans+1;
}

pair<int,int> getFurthest(int cur, int deg){

	if(visited[cur]){
		return {-1,-1};
	}

	visited[cur] = true;
	recVisited.push(cur);

	pair<int,int> ans = {cur, deg};

	for(int tar : edges[cur]){
		pair<int,int> furth = getFurthest(tar, deg+1);

		if(furth.second > ans.second) ans = furth;
	}

	return ans;
}

void solve(){	
	int n,m;
	cin>>n>>m;

	for(int i = 0; i < m; i++){
		int a,b; cin>>a>>b;

		a--,b--;
		edges[a].push_back(b);
		edges[b].push_back(a);
	}

	vector<int> ans;

	for(int i = 0; i < n; i++){
		if(!visited[i]){
			int furth = getFurthest(i, 0).first;
			while(!recVisited.empty()){
				visited[recVisited.top()] = false;
				recVisited.pop();
			}

			ans.push_back(getLengthChild(furth));
		}
	}

	int sum = 0;

	for(int a : ans) sum+=a;

	cout<<sum;
}	 

int main()
{
    cin.tie(NULL);
    ios::sync_with_stdio(NULL);
    int t = 1;

    //cin>>t;
    int temp = t;
    while(t--){
        //cout<<"Case #"<<temp - t<<" > "<<endl;
        solve();

        cout<<endl;
    }
}

컴파일 시 표준 에러 (stderr) 메시지

Main.cpp: In function 'int main()':
Main.cpp:90:9: warning: unused variable 'temp' [-Wunused-variable]
   90 |     int temp = t;
      |         ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...