-
[BaekJoon] 11724๋ฒ : ์ฐ๊ฒฐSW Test/BaekJoon 2021. 4. 23. 01:21๋ฐ์ํ
- ์ด ๊ธ์ c++๋ก ํ์ด๋ฅผ ์์ฑํ์์ต๋๋ค.
๋ฌธ์
์์
ํ์ด
- ๊ทธ๋ํ๋ฅผ ๊ตฌํํ ์ ์๋์ง ํ์ธํ๋ ๋ฌธ์ ๋ก ์ธ์ ํ๋ ฌ์ด๋ ์ธ์ ๋ฆฌ์คํธ๋ฅผ ํตํด ํํํ ์ ์์ต๋๋ค.
- ์ด ๋ฌธ์ ๊ฐ์ ๊ฒฝ์ฐ๋ ์ธ์ ํ๋ ฌ๋ณด๋ค ์ธ์ ๋ฆฌ์คํธ๋ก ํ ๊ฒฝ์ฐ ์๊ฐ๋ณต์ก๋๊ฐ ๋ฎ์ต๋๋ค. O(N2) < O(N+M)
- ๊ทธ๋ํ๋ฅผ ํํํ ํ BFS ํ์์ ํตํด ๊ตฌํํ ์ ์์ต๋๋ค.
#include<iostream> #include<vector> #include<queue> #include<algorithm> using namespace std; vector<int> vec[1005]; int main(){ int n,m; cin>>n>>m; bool visit[1005]; fill(visit, visit+1005, false); for(int i=0;i<m;i++){ int a,b; cin>>a>>b; vec[a].push_back(b); vec[b].push_back(a); } int cnt = 0; for(int i=1;i<=n;i++){ if(!visit[i]){ visit[i] = true; cnt++; queue<int> q; q.push(i); while(!q.empty()){ int cur = q.front(); q.pop(); for(int j=0;j<vec[cur].size();j++){ int nxt = vec[cur][j]; if(!visit[nxt]){ q.push(nxt); visit[nxt] = true; } } } } } cout<<cnt; }
- ์ถ๊ฐ๋ก ๊ถ๊ธํ ์ ์ด๋ ์์ ํ ๋ถ๋ถ ์์ผ๋ฉด ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์ธ์.
๋ฐ์ํ'SW Test > BaekJoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BaekJoon] 2178๋ฒ : ๋ฏธ๋ก ํ์ (0) 2021.04.23 [BaekJoon] 1926๋ฒ : ๊ทธ๋ฆผ (0) 2021.04.23 [BaekJoon] 10816๋ฒ : ์ซ์์นด๋ 2 (0) 2021.04.21 [BaekJoon] 1920๋ฒ : ์ ์ฐพ๊ธฐ (0) 2021.04.21 [BaekJoon] 12865๋ฒ : ํ๋ฒํ ๋ฐฐ๋ญ (0) 2021.04.20