https://www.acmicpc.net/problem/1260
1260번: DFS와 BFS
첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사
www.acmicpc.net
문제 풀이
https://joe0617160.tistory.com/6
[24444] - 알고리즘 수업 - 너비 우선 탐색 1
https://www.acmicpc.net/problem/24444 24444번: 알고리즘 수업 - 너비 우선 탐색 1 첫째 줄에 정점의 수 N (5 ≤ N ≤ 100,000), 간선의 수 M (1 ≤ M ≤ 200,000), 시작 정점 R (1 ≤ R ≤ N)이 ..
joe0617160.tistory.com
https://joe0617160.tistory.com/8
[24479] - 알고리즘 수업 - 깊이 우선 탐색 1
https://www.acmicpc.net/problem/24479 24479번: 알고리즘 수업 - 깊이 우선 탐색 1 첫째 줄에 정점의 수 N (5 ≤ N ≤ 100,000), 간선의 수 M (1 ≤ M ≤ 200,000), 시작 정점 R (1 ≤ R ≤ N)이..
joe0617160.tistory.com
위 두개를 합친 문제..
using System;
using System.Collections.Generic;
using System.Text;
namespace Baekjoon.Silver
{
class _1260
{
static Dictionary<int, List<int>> graph; //그래프
static int n; //정점 수
static int m; //간선 수
static int v; //시작점
static bool[] dfs_visit; //dfs 방문표시
static List<int> dfs_num = new List<int>(); //dfs 방문순서
static void Main(string[] args)
{
int[] a = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
n = a[0]; m = a[1]; v = a[2];
graph = new Dictionary<int, List<int>>();
for (int i = 1; i <= n; i++)
graph[i] = new List<int>();
//그래프
for(int i= 0; i< m; i++)
{
int[] point = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
graph[point[0]].Add(point[1]);
graph[point[1]].Add(point[0]);
}
//정렬
foreach (int key in graph.Keys)
graph[key].Sort();
//초기값 설정
dfs_visit = new bool[n + 1];
bool[] bfs_visit = new bool[n + 1]; //bfs 방문표시
List<int> bfs_num = new List<int>(); //bfs 방문순서
Queue<int> que = new Queue<int>(); //bfs 큐
dfs(v);
bfs_visit[v] = true;
bfs_num.Add(v);
que.Enqueue(v); //시작점 넣기
while (que.Count> 0)
{
int point = que.Dequeue();
foreach (int p in graph[point])
{
if (!bfs_visit[p])
{
bfs_visit[p] = true;
bfs_num.Add(p);
que.Enqueue(p);
}
}
}
Console.WriteLine(String.Join(" ", dfs_num));
Console.WriteLine(String.Join(" ", bfs_num));
}
static void dfs(int v)
{
dfs_visit[v] = true;
dfs_num.Add(v);
foreach (int point in graph[v])
{
if (!dfs_visit[point])
dfs(point);
}
}
}
}
'문제 풀이 > C#' 카테고리의 다른 글
[16928] - 뱀과 사다리 게임 (0) | 2022.10.05 |
---|---|
[1012] - 유기농 배추 (0) | 2022.10.03 |
[7569] - 토마토 (0) | 2022.10.01 |
[7576] - 토마토 (0) | 2022.10.01 |
[12865] - 평범한 배낭 (1) | 2022.09.30 |