# 17089. ์„ธ ์นœ๊ตฌ
Study Repository

17089. ์„ธ ์นœ๊ตฌ

by rlaehddnd0422

 

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

 

17089๋ฒˆ: ์„ธ ์นœ๊ตฌ

์ฒซ์งธ ์ค„์— ์‚ฌ๋žŒ์˜ ์ˆ˜ N(3 ≤ N ≤ 4,000), ์นœ๊ตฌ ๊ด€๊ณ„์˜ ์ˆ˜ M(0 ≤ M ≤ 4,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ M๊ฐœ์˜ ์ค„์—๋Š” ์นœ๊ตฌ ๊ด€๊ณ„๋ฅผ ์˜๋ฏธํ•˜๋Š” ๋‘ ์ •์ˆ˜ A, B๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์นœ๊ตฌ ๊ด€๊ณ„๋Š” A์™€ B, ๊ทธ๋ฆฌ๊ณ  B์™€ A๊ฐ€ ์นœ

www.acmicpc.net

 

 

 

 

 

์ฒ˜์Œ ๋ฌธ์ œ๋ฅผ ์ฝ๊ณ  ๋ฌธ์ œ๊ฐ€ ์ดํ•ด๊ฐ€ ์•ˆ๊ฐ”๋‹ค. ๋ฌธ์ œ๋ฅผ ์‰ฝ๊ฒŒ ์ •๋ฆฌํ•˜์ž๋ฉด,

 

1. ์„ธ ์‚ฌ๋žŒ์„ ๊ณจ๋ผ์•ผ ๋œ๋‹ค.

2. ์„ธ ์‚ฌ๋žŒ์€ ์„œ๋กœ ์นœ๊ตฌ ๊ด€๊ณ„์—ฌ์—ฌํ•จ ( ์นœ๊ตฌ ๊ด€๊ณ„๋Š” ์ž…๋ ฅ์„ ํ†ตํ•ด ์ฃผ์–ด์ง )

3. ์„ธ ์‚ฌ๋žŒ์ด ์นœ๊ตฌ๊ด€๊ณ„์ด๋ฉด์„œ ๊ฐ๊ฐ์˜ ์‚ฌ๋žŒ์ด ๊ฐ€์ง„ ์นœ๊ตฌ ์ˆ˜์˜ ํ•ฉ์˜ ์ตœ์†Œ๊ฐ’์„ ๊ตฌํ•ด์•ผ ํ•จ.

 

์˜ˆ๋ฅผ๋“ค์–ด, A, B, C๊ฐ€ ์„œ๋กœ ์นœ๊ตฌ๊ด€๊ณ„์ผ๋•Œ, A์˜ ์นœ๊ตฌ์ˆ˜ + B์˜ ์นœ๊ตฌ์ˆ˜ + C์˜ ์นœ๊ตฌ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•˜๋ผ๋Š” ๋œป

๋งŒ์•ฝ ์„ธ ์‚ฌ๋žŒ์ด ์„œ๋กœ ์นœ๊ตฌ๊ด€๊ณ„์ธ ๊ฒฝ์šฐ๊ฐ€ ์—†์œผ๋ฉด -1์„ ์ถœ๋ ฅ..

 

์ตœ๋Œ€ ์‚ฌ๋žŒ์˜ ์ˆ˜๋Š” 4000๋ช…์ธ๋ฐ 4000๋ช… ์ค‘์— 3๋ช…์„ ๊ณ ๋ฅด๋Š” ๊ฒฝ์šฐ๋Š” 4000 C 3 ~= 4000^3 = 64,000,000,000...

๋ชจ๋“  ์‚ฌ๋žŒ์„ ์กฐ์‚ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ 3์ค‘ for๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ์กฐ์‚ฌ๋ฅผ ํ•˜๋‹ˆ ๋‹น์—ฐํžˆ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚˜๊ฒ ์ง€?????

 

๋”ฐ๋ผ์„œ ๋ฐฉ๋ฒ•์„ ์กฐ๊ธˆ ์šฐํšŒํ•ด์•ผ ํ•œ๋‹ค. 

๊ณ ๋ฅธ ๋‘๋ช…์˜ ์‚ฌ๋žŒ์ด ์นœ๊ตฌ ๊ด€๊ณ„์ผ ๋•Œ๋งŒ, ๋‚˜๋จธ์ง€ ํ•œ๋ช…์„ ์กฐ์‚ฌํ•ด ์„ธ ์‚ฌ๋žŒ์ด ์„œ๋กœ ์นœ๊ตฌ๊ด€๊ณ„์ธ์ง€ ํ™•์ธํ•˜๋ฉด 2๋ฒˆ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜๋ฉด์„œ 2๋ฒˆ ์กฐ๊ฑด์„ ๋งŒ์กฑ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ตœ๋Œ€ O(N^2 + NM) ์œผ๋กœ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

 

์†Œ์Šค์ฝ”๋“œ

#include <iostream>
#include <vector>
#include <algorithm>
#include <utility>
#define FASTio ios_base :: sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL)
#define endl '\n' 

using namespace std;
int n,m;
int a[4001][4001];
vector<int> d(4001);
int f1,f2;
int ans = -1;

int main()
{
    FASTio;
    cin >> n >> m;

    for(int i=0;i<m;i++)
    {
        cin >> f1 >> f2;   
        a[f1][f2] = 1;

        // ์นœ๊ตฌ๊ด€๊ณ„ ์˜ค๋ฆ„์ฐจ์ˆœ ์ž…๋ ฅ์ด๋ผ๋Š” ์กฐ๊ฑด์ด ์—†์œผ๋ฏ€๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ์ž…๋ ฅ์ธ ๊ฒฝ์šฐ
        a[f2][f1] = 1;

        d[f1] +=1; // f1์˜ ์นœ๊ตฌ์ˆ˜ 1์ฆ๊ฐ€
        d[f2] +=1; // f2์˜ ์นœ๊ตฌ์ˆ˜ 1์ฆ๊ฐ€

    }

    // A,B๊ฐ€ ์นœ๊ตฌ์ผ ๊ฒฝ์šฐ์—๋งŒ C๋ฅผ ๊ตฌํ•œ๋‹ค -> O(n*n + mn)
    for(int i=1;i<=n;i++)
    {
        for(int j=i+1;j<=n;j++)
        {
            // i์™€ j๊ฐ€ ์นœ๊ตฌ๋ผ๋ฉด
            if(a[i][j]==1)
            {
                for(int k=j+1;k<=n;k++)
                { 
                    // i์™€ k๊ฐ€ ์นœ๊ตฌ์ด๊ณ  j์™€ k๋„ ์นœ๊ตฌ์ธ ์ฆ‰ ์„ธ์นœ๊ตฌ๊ฐ€ ๋ชจ๋‘ ์„œ๋กœ ์นœ๊ตฌ์ธ๊ฒฝ์šฐ    
                    if(a[i][k]==1 && a[j][k]==1)    
                    {   
                        int sum = d[i] + d[k] + d[j] - 6;
                        if(ans==-1 || ans>sum)
                            ans = sum;
                    } 
                }
            }
        }
    }   



    // // O(n*n*n) -> ์‹œ๊ฐ„์ดˆ๊ณผ
    // for(int i=1;i<=n;i++)
    // {
    //     for(int j=i+1;j<=n;j++)
    //     {
    //         for(int k=j+1;k<=n;k++)
    //         { 
    //             if(a[i][k]==1 && a[j][k]==1 && a[i][j]==1)    
    //             {   
    //                 int sum = d[i] + d[k] + d[j] - 6;
    //                 if(ans==-1 || ans>sum)
    //                     ans = sum;
    //             } 
    //         }
    //     }
    // }   


    cout << ans;


    return 0;
}

 

 

 

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

Study Repository

rlaehddnd0422

ํ™œ๋™ํ•˜๊ธฐ