Block, Stock and Two Smoking Galaxy Notes
면접 대비시간 제한1초메모리 제한512 MB
효과적으로 협업하는 쌍의 그래프가 주어질 때, 테크리드를 한 명 고르고 나머지를 1인 팀이나 2인 팀으로 나누되 모든 2인 팀은 간선이고 각 팀에 테크리드와 인접한 사람이 최소 한 명 있어야 한다.
문제
나는 암호화폐, 딥러닝, 자율주행 자동차, 그리고 어쩌면 모바일 음성 비서와 관련된 멋진 새 프로젝트를 시작하기로 했다(나중에 결정할 것이다). 이미 명의 유망한 소프트웨어 엔지니어로 구성된 팀이 있고, 마지막으로 남은 일은 그중에서 테크리드를 뽑는 것이다.
테크리드를 제외한 모든 엔지니어는 한 명 또는 두 명으로 구성된 팀으로 나뉘어야 한다(최근에 책 ``Agile Software Development: Programming in Pairs''의 처음 열 페이지를 읽고 그 기법이 매우 유용하다고 생각했다!). 엔지니어 쌍마다 서로 효과적으로 협력할 수 있는지 알고 있다.
테크리드의 선택과 팀 배분이 효과적이라는 것은 두 명으로 구성된 모든 팀이 효과적으로 협력할 수 있는 두 엔지니어로 이루어져 있고, 모든 팀에 테크리드와 효과적으로 협력할 수 있는 엔지니어가 적어도 한 명 있다는 뜻이다.
가능한 한 빨리 적절한 회사 구조를 찾아서 우리 스타트업이 IPO나 ICO를 할 수 있게 해 주거나(무슨 뜻인지는 아직 잘 모르겠다, 지금 그것까지 볼 시간은 없다), 그것이 불가능하고 성공과 영광의 세계가 나와는 상관없다고 판단해 달라(적어도 오늘만큼은).
입력
입력의 첫 줄에는 두 정수 과 이 주어진다(, ). 각각 소프트웨어 엔지니어의 수와 성공적으로 협력하는 쌍의 수이다.
다음 개 줄에는 각각 두 정수 , 가 주어진다(, ). 효과적으로 협력하는 쌍을 이루는 엔지니어의 번호이다.
모든 순서 없는 엔지니어 쌍은 서로 다르다.
출력
내 요구 사항을 만족하는 회사 구조를 만들 수 없다면 한 단어 No를 출력한다.
그렇지 않다면 첫 줄에 Yes를 출력한다.
둘째 줄에는 두 정수 , (, )를 출력한다. 각각 테크리드의 번호와 팀의 수이다.
다음 개 줄에는 각각 팀을 정의하는 두 정수 과 를 출력한다. 팀이 두 명으로 구성되면 과 는 그 팀을 이루는 엔지니어의 번호이고, 그렇지 않으면 은 팀의 유일한 엔지니어의 번호이고 는 이다.
정답이 여러 개라면 아무거나 출력한다.