반응형
BFS, DFS 어느 것을 이용해도 좋다.
자신 1번 컴퓨터를 제외하고 얼마나 많은 컴퓨터를 탐색했는지 카운트만 시켜주면 된다.
그리고 간선 정보 넣을 때 양방향 그래프로 처리해줘야 한다는것을 잊지말자.
실수로 단방향으로 해주면 이렇게 틀린다..
그래프 카테고리에서 이 문제보다 쉬운 문제는 포스팅하지 않을 것이다.
#include <iostream>
#include <algorithm>
#include <string.h>
#include <vector>
#include <queue>
#include <stack>
#include <string>
using namespace std;
vector<int> a[101];
queue<int> q;
bool visited[101];
int maxi(int a,int b){
if(a>b) return a;
else return b;
}
int mini(int a,int b){
if(a<b) return a;
else return b;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n,m;
int ans=0;
cin >> n;
cin >> m;
for(int i=0;i<m;i++){
int x,y;
cin >> x >> y;
a[x].push_back(y);
a[y].push_back(x);
}
q.push(1);
visited[1]=true;
while(!q.empty()){
int x=q.front();
q.pop();
for(int i=0;i<a[x].size();i++){
int y=a[x][i];
if(!visited[y]){
ans++;
visited[y]=true;
q.push(y);
}
}
}
cout<<ans;
}
반응형
댓글