๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป457

[๋ฐฑ์ค€,c++] 2533๋ฒˆ - ์‚ฌํšŒ๋ง ์„œ๋น„์Šค(SNS) ๋ฌธ์ œ 2533๋ฒˆ: ์‚ฌํšŒ๋ง ์„œ๋น„์Šค(SNS) ํŽ˜์ด์Šค๋ถ, ํŠธ์œ„ํ„ฐ, ์นด์นด์˜คํ†ก๊ณผ ๊ฐ™์€ ์‚ฌํšŒ๋ง ์„œ๋น„์Šค(SNS)๊ฐ€ ๋„๋ฆฌ ์‚ฌ์šฉ๋จ์— ๋”ฐ๋ผ, ์‚ฌํšŒ๋ง์„ ํ†ตํ•˜์—ฌ ์‚ฌ๋žŒ๋“ค์ด ์–ด๋–ป๊ฒŒ ์ƒˆ๋กœ์šด ์•„์ด๋””์–ด๋ฅผ ๋ฐ›์•„๋“ค์ด๊ฒŒ ๋˜๋Š”๊ฐ€๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์ค‘์š”ํ•ด์กŒ๋‹ค. ์‚ฌํšŒ๋ง www.acmicpc.net ์ฝ”๋“œ /* ๋ณธ์ธ์ด ์–ผ๋ฆฌ์–ด๋‹ตํ„ฐ๋ผ๋ฉด ์ž์‹๋…ธ๋“œ๋Š” ์–ผ๋ฆฌ์–ด๋‹ตํ„ฐ ์ด๊ฑฐ๋‚˜ ์•„๋‹ˆ์–ด๋„ ๋œ๋‹ค. ๋ณธ์ธ์ด ์–ผ๋ฆฌ์–ด๋‹ตํ„ฐ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ์ž์‹ ๋…ธ๋“œ๋Š” ๋ฐ˜๋“œ์‹œ ์–ผ๋ฆฌ์–ด๋‹ตํ„ฐ์—ฌ์•ผ ํ•œ๋‹ค. */ #include #include using namespace std; vectorgraph[1000001]; int dp[1000001][2]; //๋ณธ์ธ์ด ์–ผ๋ฆฌ๋‹ตํ„ฐ์ผ๋–„, ๋ณธ์ธ์ด ์–ผ๋ฆฌ์–ด๋‹ตํ„ฐ๊ฐ€ ์•„๋‹๋•Œ int N; void dfs(int node, int before){ dp[node][0] = 0; dp[.. 2022. 9. 4.
[๋ฐฑ์ค€,c++] 15681๋ฒˆ - ํŠธ๋ฆฌ์™€ ์ฟผ๋ฆฌ ๋ฌธ์ œ 15681๋ฒˆ: ํŠธ๋ฆฌ์™€ ์ฟผ๋ฆฌ ํŠธ๋ฆฌ์˜ ์ •์ ์˜ ์ˆ˜ N๊ณผ ๋ฃจํŠธ์˜ ๋ฒˆํ˜ธ R, ์ฟผ๋ฆฌ์˜ ์ˆ˜ Q๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (2 ≤ N ≤ 105, 1 ≤ R ≤ N, 1 ≤ Q ≤ 105) ์ด์–ด N-1์ค„์— ๊ฑธ์ณ, U V์˜ ํ˜•ํƒœ๋กœ ํŠธ๋ฆฌ์— ์†ํ•œ ๊ฐ„์„ ์˜ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ U, V ≤ N, U ≠ V) www.acmicpc.net ์ฝ”๋“œ #include #include using namespace std; int N, R, Q; int max_depth = -1, max_node; vectorgraph[100001]; int subnode_cnt[100001]; int dfs(int node, int before){ for(auto next: graph[node]){ if(next != before){ subnode_cnt[.. 2022. 9. 4.
[๋ฐฑ์ค€,c++] 10775๋ฒˆ - ๊ณตํ•ญ ๋ฌธ์ œ 10775๋ฒˆ: ๊ณตํ•ญ ์˜ˆ์ œ 1 : [2][?][?][1] ํ˜•ํƒœ๋กœ ๋„ํ‚น์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. 3๋ฒˆ์งธ ๋น„ํ–‰๊ธฐ๋Š” ๋„ํ‚น์‹œํ‚ฌ ์ˆ˜ ์—†๋‹ค. ์˜ˆ์ œ 2 : [1][2][3][?] ํ˜•ํƒœ๋กœ ๋„ํ‚น ์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ณ , 4๋ฒˆ์งธ ๋น„ํ–‰๊ธฐ๋Š” ์ ˆ๋Œ€ ๋„ํ‚น ์‹œํ‚ฌ ์ˆ˜ ์—†์–ด์„œ ์ดํ›„ ์ถ”๊ฐ€์ ์ธ ๋„ํ‚น์€ ๋ถˆ www.acmicpc.net ์ฝ”๋“œ #include using namespace std; int parent[100001]; int G, P, ans; int find(int x){ if(x == parent[x]) return x; else return parent[x] = find(parent[x]); } void union_parent(int a, int b){ a = find(a); b = find(b); parent[a] = b; } int ma.. 2022. 9. 2.
[๋ฐฑ์ค€,c++] 4195๋ฒˆ - ์นœ๊ตฌ ๋„คํŠธ์›Œํฌ ๋ฌธ์ œ 4195๋ฒˆ: ์นœ๊ตฌ ๋„คํŠธ์›Œํฌ ์ฒซ์งธ ์ค„์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ฒซ์งธ ์ค„์—๋Š” ์นœ๊ตฌ ๊ด€๊ณ„์˜ ์ˆ˜ F๊ฐ€ ์ฃผ์–ด์ง€๋ฉฐ, ์ด ๊ฐ’์€ 100,000์„ ๋„˜์ง€ ์•Š๋Š”๋‹ค. ๋‹ค์Œ F๊ฐœ์˜ ์ค„์—๋Š” ์นœ๊ตฌ ๊ด€๊ณ„๊ฐ€ ์ƒ๊ธด ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„ www.acmicpc.net ์ฝ”๋“œ #include #include using namespace std; int N; unordered_map parent; unordered_map connect_cnt; string find_parent(string x){ if(x == parent[x]) return x; else return parent[x] = find_parent(parent[x]); } void union_parent(string a, string b){ a = f.. 2022. 9. 2.
[๋ฐฑ์ค€,c++] 18116๋ฒˆ - ๋กœ๋ด‡ ์กฐ๋ฆฝ ๋ฌธ์ œ 18116๋ฒˆ: ๋กœ๋ด‡ ์กฐ๋ฆฝ ์„ฑ๊ทœ๋Š” ๋กœ๋ด‡์„ ์กฐ๋ฆฝํ•ด์•ผ ํ•œ๋‹ค. ์ƒ์ž ์•ˆ์—๋Š” ์—ฌ๋Ÿฌ ๋กœ๋ด‡์˜ ๋ถ€ํ’ˆ๋“ค์ด ์„ž์—ฌ ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์–ด๋–ค ๋ถ€ํ’ˆ์ด ์–ด๋Š ๋กœ๋ด‡์˜ ๋ถ€ํ’ˆ์ธ์ง€ ํ‘œ์‹œ๊ฐ€ ๋˜์–ด์žˆ์ง€ ์•Š๋‹ค. ํ˜ธ์žฌ๋Š” ์ „์ž๊ณผ๋ผ์„œ ๋‘ ๋ถ€ํ’ˆ์„ ๋ณด๋ฉด ๊ฐ™์€ ๋กœ๋ด‡์˜ www.acmicpc.net ์ฝ”๋“œ #include #include using namespace std; int N; int parent[1000001]; int child_cnt[1000001]; int find_parent(int x){ if(x == parent[x]) return x; else return parent[x] = find_parent(parent[x]); } void union_parent(int a, int b){ a = find_parent(a); b = find_p.. 2022. 9. 2.
[C++, ํ…œํ”Œ๋ฆฟ] ์œ ๋‹ˆ์˜จ ํŒŒ์ธ๋“œ ์œ ๋‹ˆ์˜จ ํŒŒ์ธ๋“œ #include #define MAX 100001 using namespace std; int N, M, ans; int parent[MAX]; int find_parent(int a){ if(a == parent[a]) return a; return parent[a] = find_parent(parent[a]); } void make_parent(int a, int b){ a = find_parent(a); b = find_parent(b); if(a 2022. 9. 2.
[๋ฐฑ์ค€,c++] 17144๋ฒˆ - ๋ฏธ์„ธ๋จผ์ง€ ์•ˆ๋…•! ๋ฌธ์ œ 17144๋ฒˆ: ๋ฏธ์„ธ๋จผ์ง€ ์•ˆ๋…•! ๋ฏธ์„ธ๋จผ์ง€๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌ์‚ฌ๊ณผ๋Š” ๊ณต๊ธฐ์ฒญ์ •๊ธฐ๋ฅผ ์„ค์น˜ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ๊ณต๊ธฐ์ฒญ์ •๊ธฐ์˜ ์„ฑ๋Šฅ์„ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌ์‚ฌ๊ณผ๋Š” ์ง‘์„ ํฌ๊ธฐ๊ฐ€ R×C์ธ ๊ฒฉ์žํŒ์œผ๋กœ ๋‚˜ํƒ€๋ƒˆ๊ณ , 1×1 ํฌ๊ธฐ์˜ ์นธ์œผ๋กœ ๋‚˜๋ˆด๋‹ค. ๊ตฌ์‚ฌ www.acmicpc.net ์ฝ”๋“œ #include #include #include using namespace std; int R, C, T; int map[51][51]; vector air_cleaner; int dx[4] = {0,0,-1,1}; int dy[4] = {-1,1,0,0}; struct SpreadInfo{ int amount; // ํ™•์‚ฐ๋œ ๋ฏธ์„ธ๋จผ์ง€ ์–‘ int r; int c; }; struct LeftInfo{ int amount; // ๋‚จ์€ ๋ฏธ์„ธ๋จผ์ง€ ์–‘ int .. 2022. 9. 2.
[๋ฐฑ์ค€,c++] 1761๋ฒˆ - ์ •์ ๋“ค์˜ ๊ฑฐ๋ฆฌ ๋ฌธ์ œ 1761๋ฒˆ: ์ •์ ๋“ค์˜ ๊ฑฐ๋ฆฌ ์ฒซ์งธ ์ค„์— ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜ N์ด ์ž…๋ ฅ๋˜๊ณ  ๋‹ค์Œ N-1๊ฐœ์˜ ์ค„์— ํŠธ๋ฆฌ ์ƒ์— ์—ฐ๊ฒฐ๋œ ๋‘ ์ ๊ณผ ๊ฑฐ๋ฆฌ๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ๊ทธ ๋‹ค์Œ ์ค„์— M์ด ์ฃผ์–ด์ง€๊ณ , ๋‹ค์Œ M๊ฐœ์˜ ์ค„์— ๊ฑฐ๋ฆฌ๋ฅผ ์•Œ๊ณ  ์‹ถ์€ ๋…ธ๋“œ ์Œ์ด ํ•œ ์ค„์— ํ•œ ์Œ์”ฉ www.acmicpc.net ์ฝ”๋“œ #include #include #define MAX 40001 using namespace std; int N, M, max_height; int depth[MAX]; vectorgraph[MAX]; bool visited[MAX]; int parent[MAX][30]; int dist[MAX][30]; void dfs(int node, int _depth){ visited[node] = 1; depth[node] = _depth; for(.. 2022. 9. 1.
[๋ฐฑ์ค€,c++] 11438๋ฒˆ - LCA 2 ๋ฌธ์ œ 11438๋ฒˆ: LCA 2 ์ฒซ์งธ ์ค„์— ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜ N์ด ์ฃผ์–ด์ง€๊ณ , ๋‹ค์Œ N-1๊ฐœ ์ค„์—๋Š” ํŠธ๋ฆฌ ์ƒ์—์„œ ์—ฐ๊ฒฐ๋œ ๋‘ ์ •์ ์ด ์ฃผ์–ด์ง„๋‹ค. ๊ทธ ๋‹ค์Œ ์ค„์—๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ณตํ†ต ์กฐ์ƒ์„ ์•Œ๊ณ ์‹ถ์€ ์Œ์˜ ๊ฐœ์ˆ˜ M์ด ์ฃผ์–ด์ง€๊ณ , ๋‹ค์Œ M๊ฐœ ์ค„์—๋Š” ์ • www.acmicpc.net ์ฝ”๋“œ #include #include #include using namespace std; vector graph[100001]; bool visited[100001]; int parent[100001][21]; int depth[100001]; int N, M, max_height; void dfs(int node, int _depth){ // ๋…ธ๋“œ ๊นŠ์ด ์„ธํŒ… visited[node] = 1; depth[node] = _depth; for(auto.. 2022. 8. 30.