[๋ฐฑ์ค€] 9576๋ฒˆ: ์ฑ… ๋‚˜๋ˆ ์ฃผ๊ธฐ

2020. 12. 28. 00:18ใ†๐Ÿ‘จ๐Ÿป‍๐Ÿซ ํ”„๋กœ๊ทธ๋ž˜๋ฐ/BOJ(๋ฐฑ์ค€)



20๋…„์˜ ๋งˆ์ง€๋ง‰ ์ฃผ๋ง ์ž˜ ๋ณด๋‚ด์…จ๋‚˜์š”?

์—ฐ๋ง์— ์ฆ๊ฑฐ์šด ์‹œ๊ฐ„ ๋ณด๋‚ด์‹œ๊ณ  ์ˆ ์€ ์ ๋‹นํžˆ ๋จน๋Š”๊ฒŒ ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค..

๊ฐ™์ด ๋ฌธ์ œ ํ’€์–ด๋ณผ๊นŒ์š”?
.



๋ฌธ์ œ

๋ฐฑ์ค€์ด๋Š” ๋ฐฉ ์ฒญ์†Œ๋ฅผ ํ•˜๋ฉด์„œ ํ•„์š” ์—†๋Š” ์ „๊ณต ์„œ์ ์„ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋‚˜๋ˆ ์ฃผ๋ ค๊ณ  ํ•œ๋‹ค. ๋‚˜๋ˆ ์ค„ ์ฑ…์„ ๋ชจ์•„๋ณด๋‹ˆ ์ด N๊ถŒ์ด์—ˆ๋‹ค. ์ฑ…์ด ๋„ˆ๋ฌด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฑ์ค€์ด๋Š” ์ฑ…์„ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ๊ฐ 1๋ถ€ํ„ฐ N๊นŒ์ง€์˜ ์ •์ˆ˜ ๋ฒˆํ˜ธ๋ฅผ ์ค‘๋ณต๋˜์ง€ ์•Š๊ฒŒ ๋งค๊ฒจ ๋‘์—ˆ๋‹ค.

์กฐ์‚ฌ๋ฅผ ํ•ด ๋ณด๋‹ˆ ์ฑ…์„ ์›ํ•˜๋Š” ์„œ๊ฐ•๋Œ€ํ•™๊ต ํ•™๋ถ€์ƒ์ด ์ด M๋ช…์ด์—ˆ๋‹ค. ๋ฐฑ์ค€์ด๋Š” ์ด M๋ช…์—๊ฒŒ ์‹ ์ฒญ์„œ์— ๋‘ ์ •์ˆ˜ a, b (1 โ‰ค a โ‰ค b โ‰ค N)๋ฅผ ์ ์–ด ๋‚ด๋ผ๊ณ  ํ–ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋ฐฑ์ค€์ด๋Š” ์ฑ… ๋ฒˆํ˜ธ๊ฐ€ a ์ด์ƒ b ์ดํ•˜์ธ ์ฑ… ์ค‘ ๋‚จ์•„์žˆ๋Š” ์ฑ… ํ•œ ๊ถŒ์„ ๊ณจ๋ผ ๊ทธ ํ•™์ƒ์—๊ฒŒ ์ค€๋‹ค. ๋งŒ์•ฝ a๋ฒˆ๋ถ€ํ„ฐ b๋ฒˆ๊นŒ์ง€์˜ ๋ชจ๋“  ์ฑ…์„ ์ด๋ฏธ ๋‹ค๋ฅธ ํ•™์ƒ์—๊ฒŒ ์ฃผ๊ณ  ์—†๋‹ค๋ฉด ๊ทธ ํ•™์ƒ์—๊ฒŒ๋Š” ์ฑ…์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค.

๋ฐฑ์ค€์ด๊ฐ€ ์ฑ…์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ํ•™์ƒ ์ˆ˜๋ฅผ ๊ตฌํ•˜์‹œ์˜ค.


์ž…์ถœ๋ ฅ


์ž…๋ ฅ ์ฒซ์งธ ์ค„์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

๊ฐ ์ผ€์ด์Šค์˜ ์ฒซ ์ค„์— ์ •์ˆ˜ N(1 โ‰ค N โ‰ค 1,000)๊ณผ M(1 โ‰ค M โ‰ค 1,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ ์ค„๋ถ€ํ„ฐ M๊ฐœ์˜ ์ค„์—๋Š” ๊ฐ๊ฐ ์ •์ˆ˜ ai, bi๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค ai โ‰ค bi โ‰ค N)

์ถœ๋ ฅ : ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋งˆ๋‹ค ๋ฐฑ์ค€์ด๊ฐ€ ์ฑ…์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ํ•™์ƒ ์ˆ˜๋ฅผ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ถœ๋ ฅํ•œ๋‹ค.

ํ’€์ด & ์ฝ”๋“œ

ํ•™๋ถ€์ƒ ๊ณผ ์ „๊ณต์ฑ… ์ง‘๋‹จ๊ฐ„์˜ ์ตœ๋Œ€ ๋งค์นญ์„ ์ฐพ๋Š” ๋ฌธ์ œ์ด๊ธฐ๋•Œ๋ฌธ์— ์ด๋ถ„๋งค์นญ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋‘ ์ง‘๋‹จ๊ฐ„์˜ ๊ทธ๋ž˜ํ”„ ์—ฐ๊ฒฐ ๊ด€๊ณ„๋Š” ์ž…๋ ฅ๋œ a , b ์‚ฌ์ด์˜ ๋ชจ๋“  ์ฑ…๊ณผ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ณ  ์ด ์ •๋ณด๋ฅผ 2์ฐจ์› ๋ฐฐ์—ด์„ ํ†ตํ•ด ์ €์žฅํ•˜์˜€์Šต๋‹ˆ๋‹ค. 

์ด๋ถ„๋งค์นญ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด์„œ๋Š” ๋”ฐ๋กœ ํฌ์ŠคํŒ…์„ ๋‚จ๊ธฐ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

#include<bits/stdc++.h> using namespace std; const int MAX=1000+1; int T,N,M,students[MAX][3],books[MAX],visited[MAX]; bool dfs(int a){ if(visited[a]) return false; visited[a]=true; for(int b=students[a][1];b<=students[a][2];b++){ if(books[b]==0||dfs(books[b])){ // ๋งค์นญ์ด ์•ˆ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ, students[a][0]=b;               // books[b] == 0 -> ํ•™์ƒ์ธ๋ฑ์Šค 1๋ถ€ํ„ฐ ์‹œ์ž‘ books[b]=a; return true; } } return false; } int biMatch(){ int ans=0; for(int i=1;i<=M;i++){ fill(visited,visited+MAX,0); if(dfs(i)) ans++; } return ans; } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cin>>T; while(T--){ memset(students,0,sizeof(students)); memset(books,0,sizeof(books)); cin>>N>>M; for(int i=1;i<=M;i++){ cin>>students[i][1]>>students[i][2]; // a , b์ž…๋ ฅ } cout<<biMatch()<<"\n"; } return 0; }


๋ถ€์กฑํ•œ ๋ถ€๋ถ„์ด๋‚˜ ๊ถ๊ธˆํ•œ ๋ถ€๋ถ„ ๋Œ“๊ธ€ ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!.