https://www.acmicpc.net/problem/1325
1325번: 효율적인 해킹
첫째 줄에, N과 M이 들어온다. N은 10,000보다 작거나 같은 자연수, M은 100,000보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에 신뢰하는 관계가 A B와 같은 형식으로 들어오며, "A가 B를 신뢰한
www.acmicpc.net
[난이도] Silver1
[유형] DFS
[풀이]
dfs를 이용해 각 노드부터 시작해서 방문할 수 있는 총 노드의 개수를 구할 수 있습니다.
이 노드의 개수가 해킹할 수 있는 노드의 개수입니다.
#include <cstdio>
#include <vector>
#include <map>
#include <algorithm>
#include <cstring>
using namespace std;
int N,M,visit[10001];
vector<int> adj[10001];
map<int,vector<int>> mp;
int dfs(int n){
visit[n]=1;
int ret=1;
for(auto nxt : adj[n]){
if(!visit[nxt]){
ret+=dfs(nxt);
}
}
return ret;
}
int main(){
scanf("%d%d",&N,&M);
while(M--){
int u,v;scanf("%d%d",&u,&v);adj[v].push_back(u);
}
for(int i=1;i<=N;i++){
memset(visit,0,sizeof(visit));
mp[dfs(i)].push_back(i);
}
auto [k,res] = *mp.rbegin();
sort(res.begin(),res.end());
for(auto a : res) printf("%d ",a);
}
https://github.com/has2/Problem-Solving/blob/master/boj-solved.ac/Silver1/1325.cpp
'Problem-Solving > BOJ' 카테고리의 다른 글
[BOJ/백준][Gold3] 2026 : 소풍 (C++) (0) | 2022.02.20 |
---|---|
[BOJ/백준][Gold3] 20057 : 마법사 상어와 토네이도 (C++) (0) | 2022.02.20 |
[BOJ/백준][Silver5] 2947 : 나무 조각 (C++) (0) | 2022.02.20 |
[BOJ/백준][Gold5] 15922 : 아우으 우아으이야!! (C++) (0) | 2022.02.20 |
[BOJ/백준][Gold5] 17069 : 파이프 옮기기 2 (C++) (0) | 2022.02.20 |