๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/๋ฐฑ์ค€(BOJ)

[๋ฐฑ์ค€,c++] 2422๋ฒˆ - ํ•œ์œค์ •์ด ์ดํƒˆ๋ฆฌ์•„์— ๊ฐ€์„œ ์•„์ด์Šคํฌ๋ฆผ์„ ์‚ฌ๋จน๋Š”๋ฐ

by ์•ˆ์ฃผํ˜• 2022. 3. 27.

๋ฌธ์ œ

 

2422๋ฒˆ: ํ•œ์œค์ •์ด ์ดํƒˆ๋ฆฌ์•„์— ๊ฐ€์„œ ์•„์ด์Šคํฌ๋ฆผ์„ ์‚ฌ๋จน๋Š”๋ฐ

์ฒซ์งธ ์ค„์— ์ •์ˆ˜ N๊ณผ M์ด ์ฃผ์–ด์ง„๋‹ค. N์€ ์•„์ด์Šคํฌ๋ฆผ ์ข…๋ฅ˜์˜ ์ˆ˜์ด๊ณ , M์€ ์„ž์–ด๋จน์œผ๋ฉด ์•ˆ ๋˜๋Š” ์กฐํ•ฉ์˜ ๊ฐœ์ˆ˜์ด๋‹ค. ์•„๋ž˜ M๊ฐœ์˜ ์ค„์—๋Š” ์„ž์–ด๋จน์œผ๋ฉด ์•ˆ ๋˜๋Š” ์กฐํ•ฉ์˜ ๋ฒˆํ˜ธ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ™์€ ์กฐํ•ฉ์€ ๋‘ ๋ฒˆ

www.acmicpc.net

 

์ฝ”๋“œ

#include <iostream>
#include <vector>
#include <map>
using namespace std;


int N,M,ans;
vector<int>v[201];

void dfs(int now, int first, int second, int third, int cnt){
    if(cnt==3){
        for(int i=0; i<v[first].size(); i++){
            if(v[first][i] == second || v[first][i] == third) return;
        }
        for(int i=0; i<v[second].size(); i++){
            if(v[second][i] == first || v[second][i] == third) return;
        }
        for(int i=0; i<v[third].size(); i++){
            if(v[third][i] == first || v[third][i] == second) return;
        }
        ans++;
        return;
    }
    
    for(int i=now; i<N; i++){
        if(cnt==1) dfs(i+1,first,i+1,third,cnt+1);
        else if(cnt==2) dfs(i+1,first,second,i+1,cnt+1);
    }
    
    
    
    
}
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    cin>>N>>M;
    
    for(int i=0; i<M; i++){
        int a, b; cin>>a>>b;
        v[a].push_back(b);
        v[b].push_back(a);
    }
    
    for(int i=1; i<N; i++){
        dfs(i, i, -1, -1, 1);
    }
    cout<<ans;
}

 

ํ’€์ด

๋จผ์ € ๋ชจ๋“  ์•„์ด์Šคํฌ๋ฆผ์„ ์„ธ ๊ฐœ ๊ณ ๋ฅธ ๋’ค์— ํ•ด๋‹น ์กฐํ•ฉ์ด ์œ ํšจํ•œ์ง€ ๊ฒ€์‚ฌํ•˜๋Š” ์‹์œผ๋กœ ํ’€์ดํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ๊ณ ๋ฅด๊ธฐ ์ „์— ๋จผ์ € ์กฐํ•ฉ์ด ์œ ํšจํ•œ์ง€ ๊ฒ€์‚ฌํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๊ตฌํ˜„ํ–ˆ๋Š”๋ฐ, ๊ณ„์† ์˜ค๋‹ต์ด ๋– ์„œ ์œ„ ๋ฐฉํ–ฅ์œผ๋กœ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. 

๋Œ“๊ธ€