본문 바로가기

algorithm

2533

https://www.acmicpc.net/problem/2533

 

2533번: 사회망 서비스(SNS)

페이스북, 트위터, 카카오톡과 같은 사회망 서비스(SNS)가 널리 사용됨에 따라, 사회망을 통하여 사람들이 어떻게 새로운 아이디어를 받아들이게 되는가를 이해하는 문제가 중요해졌다. 사회망

www.acmicpc.net

 

1. 부모가 얼리어댑터가 아닐 때 : dp[부모][0] += dp[자식][1]

2. 부모가 얼리어댑터일 때 : dp[부모][1] += min(dp[자식][0],dp[자식][1])

 

 

 

 

 

 

#include <iostream>
#include <vector>
#include <cstring>

using namespace std;
int N;
int dp[1000010][2];
vector<int> v[1000010];
void dfs(int x,int par){
    if(dp[x][0] != -1) return;
     dp[x][0] = 0;
     dp[x][1] = 1; 
	for(int i:v[x]){
	if(i==par) continue;
	    dfs(i,x);
		dp[x][0] += dp[i][1]; 
        dp[x][1] += min(dp[i][1],dp[i][0]);  
}
   return ;
}
int main() {
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin>>N;
	for(int i=0,u,x;i<N -1;i++){
		cin>>u>>x;
		v[u].push_back(x);
		v[x].push_back(u);
	}
	memset(dp,-1,sizeof(dp));
	v[0].push_back(1);
	dfs(1,0);
//	for(int i =0 ; i <= N ;i++) cout<<dp[i][0]<<" "<<dp[i][1]<<'\n';
	cout<<min(dp[1][0],dp[1][1]);	
	return 0;
}

'algorithm' 카테고리의 다른 글

1016  (0) 2022.05.21
2213  (0) 2022.05.20
2110,2447  (0) 2022.05.18
1450 로봇청소기  (0) 2022.05.16
16888 루트 게임  (0) 2022.05.15