[2606] 바이러스, C++

2019. 7. 24. 18:02·DEV/PS

한줄 후기 : 무서운 바이러스 

 

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

 

2606번: 바이러스

첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어진다. 이어서 그 수만큼 한 줄에 한 쌍씩 네트워크 상에서 직접 연결되어 있는 컴퓨터의 번호 쌍이 주어진다.

www.acmicpc.net

1번 컴퓨터를 통해 걸린 바이러스 이므로 DFS나 BFS로 1번부터 돌면서 cnt++ 하면된다. 

주의 할 점은 1번 컴퓨터는 제외 이니 마지막에 cnt-1 해줘야함.

 

#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
bool visit[101]={false}; 
vector<int> met[101];
int dfs(int start);
int cnt=0;
int main(){
	int n, m;
	cin >> n >> m;
	for(int i=1; i<=m; i++){
		int u, ver;
		cin >> u >> ver;
		met[u].push_back(ver);
		met[ver].push_back(u);
	}
	for(int i=1; i<=n; i++){
		sort(met[i].begin(), met[i].end());
	} 
	dfs(1);
	cout << (cnt-1);
}
int dfs(int start){
	cnt++;
	visit[start] = true;
	for(int i=0; i < met[start].size(); i++ ){
		int next = met[start][i];
		if(visit[next]==false)	dfs(next);
	}
}

DFS 이용 코드

 

#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
bool visit[101]={false}; 
vector<int> met[101];
int bfs(int start);
int cnt=0;
int main(){
	int n, m;
	cin >> n >> m;
	for(int i=1; i<=m; i++){
		int u, ver;
		cin >> u >> ver;
		met[u].push_back(ver);
		met[ver].push_back(u);
	}
	for(int i=1; i<=n; i++){
		sort(met[i].begin(), met[i].end());
	} 
	bfs(1);
	cout << (cnt-1);
}
int bfs(int start){
	queue<int> q;
	visit[start] = true;
	q.push(start);
	while(!q.empty()){
		int now = q.front();
		q.pop();
		cnt++;
		for(int i=0; i<met[now].size(); i++){
			int next = met[now][i];
			if(visit[next]==false) {
				visit[next] = true;
				q.push(next);
			}
		} 
	}
}

BFS 이용 코드

'DEV > PS' 카테고리의 다른 글

[10451] 순열 싸이클, C++  (0) 2019.07.24
[7576] 토마토, C++  (0) 2019.07.24
[11724] 연결 요소의 개수, C/C++  (0) 2019.07.24
[11057] 오르막 수 , C++  (0) 2019.07.23
[2193] 이친수, C++  (0) 2019.07.23
'DEV/PS' 카테고리의 다른 글
  • [10451] 순열 싸이클, C++
  • [7576] 토마토, C++
  • [11724] 연결 요소의 개수, C/C++
  • [11057] 오르막 수 , C++
jobchae
jobchae
말하는 감자지만, 코드를 끄적이는 Node.js 백엔드 개발자입니다.
  • jobchae
    JOBCHAE
    jobchae
  • 전체
    오늘
    어제
    • 🚀 JOBCHAE (177)
      • DEV (146)
        • PS (108)
        • Node.js (12)
        • React (3)
        • docker (1)
        • 잡다한 개발 일지 (20)
        • injection (1)
        • CI CD (0)
        • JS, TS (1)
      • 축구 (0)
      • 일상 (19)
      • 영화 (3)
      • 음악 (8)
  • 블로그 메뉴

    • 💻 Github
    • 🙋🏻 Linkedin
    • 📖 방명록
  • 링크

    • PS Github
  • 공지사항

  • 인기 글

  • 태그

    react
    이분탐색
    aws
    node.js
    렛츠락페스티벌
    리액트
    슬랙봇
    앱잼
    솝트
    BFS
    PS
    SOPT
    회고
    백준
    Nest
    nodejs
    GitHub
    DP
    알고리즘
    boj
    mongoDB
    typescript
    슬랙
    Nest.js
    Express
    위상정렬
    일상
    slack
    우선순위큐
    DFS
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
jobchae
[2606] 바이러스, C++
상단으로

티스토리툴바