[백준] 1260번 bfs와 dfs (python, java)

728x90
반응형

1. python

import collections
import sys

sys.setrecursionlimit(2000)

def dfs(x):
    visited[x]=True
    print(x,end=' ')
    for y in sorted(dict[x]):
        if not visited[y]:
            dfs(y)

def bfs(x):
    visited[x]=True
    dq=collections.deque()
    dq.append(x)
    while dq:
        cur=dq.popleft()
        print(cur,end=' ')
        for y in sorted(dict[cur]):
            if not visited[y]:
                visited[y]=True
                dq.append(y)
                
                


n,m,v=map(int,sys.stdin.readline().split())
dict=collections.defaultdict(list)
for i in range(m):
    a,b=map(int,sys.stdin.readline().split())
    dict[a].append(b)
    dict[b].append(a)

visited=[False]*(n+1)
dfs(v)

visited=[False]*(n+1)
print()
bfs(v)

    


2. java

 

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class B_1260_Main {
	static int n,m,v;
	static LinkedList<Integer>[] list;
	static boolean[] vis;
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		n=sc.nextInt();
		m=sc.nextInt();
		v=sc.nextInt();
		vis=new boolean[n+1];
		list=new LinkedList[n+1];
		for (int i = 0; i < n+1; i++) {
			list[i]=new LinkedList<>();
		}
		for (int i = 0; i < m; i++) {
			 int a=sc.nextInt();
			 int b=sc.nextInt();
			 list[a].add(b);
			 list[b].add(a);
		}
		dfs(v);
		System.out.println();
		bfs();
	}
	private static void bfs() {
		Queue<Integer> q=new LinkedList<>();
		vis=new boolean[n+1];
		q.add(v);
		vis[v]=true;
		while(q.size()!=0) {
			int cur=q.poll();
			System.out.print(cur+" ");
			list[cur].sort((a,b)->a-b);
			for (int i = 0; i < list[cur].size(); i++) {
				int next=list[cur].get(i);
				if(vis[next])continue;
				vis[next]=true;
				q.add(next);
			}
		}
		System.out.println();
	}
	private static void dfs(int cur) {
		vis[cur]=true;
		System.out.print(cur+" ");
		list[cur].sort((a,b)->a-b);
		for (int i = 0; i < list[cur].size(); i++) {
			int next=list[cur].get(i);
			if(vis[next])continue;
			dfs(next);
		}
		
	}
}
728x90
반응형
TAGS.

Comments