[BOJ/17222] ์œ„์Šคํ‚ค ๊ฑฐ๋ž˜, c++

2021. 8. 12. 19:19ยทDEV/PS

๐Ÿ”— ๋งํฌ

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

 

17222๋ฒˆ: ์œ„์Šคํ‚ค ๊ฑฐ๋ž˜

์ฃผ์€์ด์™€ ๋ช…์ง„์ด๋Š” ์‚ฌ์ ์œผ๋กœ ์œ„์Šคํ‚ค๋ฅผ ๊ฑฐ๋ž˜ํ•˜๋Š” ์‚ฌ์ด์ด๋‹ค. ์ฃผ์€์ด๋Š” ๋ˆ๋„ ๋งŽ๊ณ  ์œ„์Šคํ‚ค๋ฅผ ๋ฌด์ฒ™ ์ข‹์•„ํ•ด์„œ ์œ„์Šคํ‚ค๋ฅผ ๊ฐ€๋Šฅํ•œ ํ•œ ๋งŽ์ด ์‚ฌ๊ณ  ์‹ถ์–ดํ•˜๊ณ , ๋ช…์ง„์ด๋Š” ์œ„์Šคํ‚ค๊ฐ€ ๋„˜์ณ๋‚˜์„œ ์œ„์Šคํ‚ค๋ฅผ ๊ฐ€๋Šฅํ•œ

www.acmicpc.net

๐Ÿคฏ ํ•œ์ค„ ํ›„๊ธฐ

์œ„์Šคํ‚ค๋Š” ๋ฆฝ๋ฐค ๋ฐ”๋ฅด๋“ฏ์ด ๋จน๋Š”๊ฑฐ์ž„

๐Ÿคท ๋ฌธ์ œ

๐Ÿ‘ฉ‍๐Ÿ’ป ํ’€์ด

์ตœ๋Œ€ ์œ ๋Ÿ‰ ๋ฌธ์ œ์ด๋‹ค.

๋ช…์ง„ -> ๋ช…์ง„ ์นœ๊ตฌ๋“ค -> ์ฃผ์€ ์นœ๊ตฌ๋“ค -> ์ฃผ์€

์ด ๋ฐฉํ–ฅ์„ ์ตœ๋Œ€ ์œ ๋Ÿ‰์„ ๊ณ„์‚ฐํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

์ฃผ์€์ด๋Š” ์ค‘๊ฐ„์— ์นœ๊ตฌ๋“ค ๊ฐ๊ฐ์ด ๋งŒ์กฑ๋งŒํ•˜๋ฉด ์œ„์Šคํ‚ค๋ฅผ ๋ฌดํ•œ๋Œ€๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— d[i][e] (e = end) = INF ๋กœ ์ดˆ๊ธฐํ™”ํ•ด์ค€๋‹ค.

๋ช…์ง„์ด ์นœ๊ตฌ๋“ค์€ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์œ„์Šคํ‚ค ์–‘ ์ œํ•œ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— d[s][i] = cnt ๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

์ด์ œ ์ค‘๊ฐ„ ๋ช…์ง„ ์นœ๊ตฌ - ์ฃผ์€ ์นœ๊ตฌ๋Š” ์ฃผ์€ ์นœ๊ตฌ๋“ค์ด ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์œ„์Šคํ‚ค ์–‘์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

์ด๋ ‡๊ฒŒ ๊ฐ ๊ฐ„์„ ๋ณ„ ํ๋ฅผ ์ˆ˜ ์žˆ๋Š” ์šฉ๋Ÿ‰ (capacity)์„ ์ดˆ๊ธฐํ™” ํ•ด์ค€ ๋’ค ๋ฐ”๋กœ ์ตœ๋Œ€ ์œ ๋Ÿ‰์„ ๊ตฌํ•ด์ฃผ๋ฉด ๋œ๋‹ค!

์—๋“œ๋ชฌ๋“œ-์นดํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด ๊ตฌํ•ด์ฃผ์—ˆ๋‹ค. 

์ตœ๋Œ€ ์œ ๋Ÿ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์•ˆ๋‹ค๋ฉด ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ๋ฌธ์ œ์ด๋‹ค.

๐Ÿ’ป ์ฝ”๋“œ

//AC
//BOJ 17222 ์œ„์Šคํ‚ค ๊ฑฐ๋ž˜
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#include <string>
using namespace std;
#define INF 987654321
#define SIZE 220
vector<int> v[SIZE];
int c[SIZE][SIZE];
int f[SIZE][SIZE];
int maxFlow(int s, int e)
{
    int total = 0;
    while (1)
    {
        queue<int> q;
        vector<int> parent(SIZE, -1);
        q.push(s);
        while (!q.empty() && parent[s] == -1)
        {
            int cur = q.front();
            q.pop();
            for (int next : v[cur])
            {
                if (c[cur][next] - f[cur][next] > 0 && parent[next] == -1)
                {
                    q.push(next);
                    parent[next] = cur;
                }
            }
        }
        if (parent[e] == -1)
            break;
        int amount = INF;
        for (int i = e; i != s; i = parent[i])
        {
            amount = min(amount, c[parent[i]][i] - f[parent[i]][i]);
        }
        for (int i = e; i != s; i = parent[i])
        {
            f[parent[i]][i] += amount;
        }
        total += amount;
    }
    return total;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int N, M;
    cin >> N >> M;
    int cnt[N + M];
    int s = 0, e = N + M + 1;
    for (int i = 1; i <= N; i++)
    {
        cin >> cnt[i];
        v[e].push_back(i);
        v[i].push_back(e);
        c[i][e] = INF;
    }
    for (int i = N + 1; i <= N + M; i++)
    {
        cin >> c[s][i];
        v[i].push_back(s);
        v[s].push_back(i);
        cnt[i] = c[s][i];
    }
    for (int i = N + 1; i <= N + M; i++)
    {
        int n;
        cin >> n;
        for (int j = 0; j < n; j++)
        {
            int node;
            cin >> node;
            v[i].push_back(node);
            v[node].push_back(i);
            c[i][node] = cnt[node];
        }
    }
    int total = maxFlow(s, e);
    cout << total;
    return 0;
}
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'DEV > PS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[BOJ/20665] ๋…์„œ์‹ค ๊ฑฐ๋ฆฌ๋‘๊ธฐ, c++  (2) 2021.08.20
[BOJ/11280] 2-SAT - 3, c++  (2) 2021.08.19
[BOJ/13904] ๊ณผ์ œ, c++  (0) 2021.08.10
[BOJ/22352] ํ•ญ์ฒด์ธ์‹, c++  (0) 2021.08.05
[BOJ/16118] ๋‹ฌ๋น› ์—ฌ์šฐ, c++  (0) 2021.07.25
'DEV/PS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [BOJ/20665] ๋…์„œ์‹ค ๊ฑฐ๋ฆฌ๋‘๊ธฐ, c++
  • [BOJ/11280] 2-SAT - 3, c++
  • [BOJ/13904] ๊ณผ์ œ, c++
  • [BOJ/22352] ํ•ญ์ฒด์ธ์‹, c++
jobchae
jobchae
๋งํ•˜๋Š” ๊ฐ์ž์ง€๋งŒ, ์ฝ”๋“œ๋ฅผ ๋„์ ์ด๋Š” Node.js ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค.
  • jobchae
    JOBCHAE
    jobchae
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๐Ÿš€ JOBCHAE (177)
      • DEV (146)
        • PS (108)
        • Node.js (12)
        • React (3)
        • docker (1)
        • ์žก๋‹คํ•œ ๊ฐœ๋ฐœ ์ผ์ง€ (20)
        • injection (1)
        • CI CD (0)
        • JS, TS (1)
      • ์ถ•๊ตฌ (0)
      • ์ผ์ƒ (19)
      • ์˜ํ™” (3)
      • ์Œ์•… (8)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ๐Ÿ’ป Github
    • ๐Ÿ™‹๐Ÿป Linkedin
    • ๐Ÿ“– ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

    • PS Github
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    typescript
    Nest
    node.js
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    ์šฐ์„ ์ˆœ์œ„ํ
    react
    ์Šฌ๋ž™
    nodejs
    boj
    ํšŒ๊ณ 
    PS
    ์•ฑ์žผ
    ์ด๋ถ„ํƒ์ƒ‰
    SOPT
    mongoDB
    DP
    BFS
    ์†ํŠธ
    Express
    Nest.js
    GitHub
    slack
    ์œ„์ƒ์ •๋ ฌ
    aws
    ์Šฌ๋ž™๋ด‡
    ๋ฆฌ์•กํŠธ
    ๋ฐฑ์ค€
    ๋ ›์ธ ๋ฝํŽ˜์Šคํ‹ฐ๋ฒŒ
    DFS
    ์ผ์ƒ
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
jobchae
[BOJ/17222] ์œ„์Šคํ‚ค ๊ฑฐ๋ž˜, c++
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”