본문 바로가기
Algorithm 🧑🏻‍💻/백준(BOJ)

[백준,c++] 14496번 - 그대,그머가 되어

by dkswnkk 2021. 11. 7.

문제

 

14496번: 그대, 그머가 되어

첫째 줄에 머호가 바꾸려 하는 문자 a와 b가 주어진다. 둘째 줄에 전체 문자의 수 N과 치환 가능한 문자쌍의 수 M이 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ M ≤ 10,000) 이후 M개의 줄에 걸쳐 치환 가능한 문

www.acmicpc.net

 

코드

#include <iostream>
#include <queue>

using namespace std;

int a,b,N,M;
int ans=9999;
int visited[1001];
vector<int>v[1001];

void bfs(int start,int depth){
    queue<pair<int,int>>q;
    q.push({start,depth});
    visited[start]=1;
    while(!q.empty()){
        int start=q.front().first;
        int depth=q.front().second;
        q.pop();

        if(start==b){
            ans=min(depth,ans);
        }
        for(int i=0; i<v[start].size(); i++){
            if(!visited[v[start][i]]){
                q.push({v[start][i],depth+1});
                visited[v[start][i]]=1;
            }
        }
    }
}
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);

    cin>>a>>b>>N>>M;
    for(int i=0; i<M; i++){
        int inp1,inp2; cin>>inp1>>inp2;
        v[inp1].push_back(inp2);
        v[inp2].push_back(inp1);
    }

    bfs(a,0);
    if(ans==9999) cout<<-1;
    else cout<<ans;
}

댓글