[ ๋ฌธ์ ๋งํฌ ]
https://www.acmicpc.net/problem/11403
๐ฉ ์กฐ๊ฑด
- ๊ฐ์ค์น ์๋ ๋ฐฉํฅ ๊ทธ๋ํ G๊ฐ ์ฃผ์ด์ง
- (i,j)์ ๋ํด, i์์ j๋ก ๊ฐ๋ ๊ธธ์ด๊ฐ ์์์ธ ๊ฒฝ๋ก๊ฐ ์๋์ง ๊ตฌํด๋ผ
- ๊ฒฝ๋ก๊ฐ ์์ผ๋ฉด 1, ์์ผ๋ฉด 0์ผ๋ก + ์ธ์ ํ๋ ฌ ํ์์ผ๋ก ์ถ๋ ฅ
๐ฉ ์ ๊ทผ
- ๊ทธ๋ํ -> vector๋ก ๊ตฌํ
- ์ฌ๊ท์ ์ผ๋ก ๊ตฌํํ์ (ex. 4๋ฒ ๊ฐ ์ ์์ผ๋ฉด 4๋ฒ์ด ๊ฐ ์ ์๋ 1,2๋ฒ๋ ๊ฐ ์ ์๊ณ 1,2๋ฒ์ด ๊ฐ ์ ์๋ ...)
๊ทผ๋ฐ ์ด๊ฑธ ์ด๋ป๊ฒ ๊ตฌํํ์ง? ์ฌ๊ท์ ํ์ถ ์กฐ๊ฑด์ ๋ชจ๋ฅด๊ฒ ๋ค
๐ฉ ์ํ์ฐฉ์ค
- vector<int> vec[100] != vector<vector<int>> vec;
vector<int> v1[100]; //vector<int> 100๊ฐ๋ฅผ ๊ฐ์ง๋ ๋ฐฐ์ด
v1[0].push_back(1);
vector<vector <int>> v2; //vector<int>๋ฅผ ์์๋ก ๊ฐ์ง๋ ๊ฐ๋ณ์ ์ธ ๋ฐฐ์ด
v2.push_back(vector<int>()); //์ฒ์์๋ ๋น ๋ฐฐ์ด์ด๊ธฐ ๋๋ฌธ์ ๋ฐ๋์ ํ์
v2[0].push_back(1);
- ์ฌ๊ท์ ์ผ๋ก ๊ตฌํ = DFS
- DFS์ ๋ํด์ ์ข ๋ ๊ณต๋ถํ์ ([์ฐธ๊ณ ] https://m42-orion.tistory.com/63)
๐ป ์ฝ๋ (C++)
#include <iostream>
#include <vector>
using namespace std;
vector<vector<int>> vec;
vector<int> temp;
int visit[101];
void dfs(int x){
for(int i=0;i<vec[x].size();i++){
if(!visit[vec[x][i]]){
visit[vec[x][i]]=1;
dfs(vec[x][i]);
}
}
}
void print(int k){
for(int i=0;i<k;i++){
cout<<visit[i]<<" ";
}
cout<<"\n";
}
void clean(int k){
for(int i=0;i<k;i++){
visit[i]=0;
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
int N, x;
cin>>N;
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
cin>>x;
if(x==1) temp.push_back(j);
}
vec.push_back(temp);
temp.clear();
}
for(int i=0;i<N;i++){
dfs(i);
print(N);
clean(N);
}
}
'๐ป Algorithms > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 2164 ์นด๋2 - ํ (0) | 2024.08.19 |
---|---|
[๋ฐฑ์ค] 1992 ์ฟผ๋ํธ๋ฆฌ - ์ฌ๊ทํจ์ (0) | 2024.08.19 |
[๋ฐฑ์ค] 1927 ์ต์ ํ - ์ฐ์ ์์ ํ (0) | 2024.08.14 |
[๋ฐฑ์ค] 11780 ํ๋ก์ด๋2 - ํ๋ก์ด๋ ๊ฒฝ๋ก๋ณต์ (0) | 2024.08.04 |
[๋ฐฑ์ค] 11404 ํ๋ก์ด๋ - ํ๋ก์ด๋ (0) | 2024.08.04 |