QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 1024 MB Total points: 100 Hackable ✓

#20131. 그래프 집기

Statistics

Bash와 Chikapu는… 그래프에 몹시 빠져 있다. 그래프를 가지고 노는 것이 너무 즐거워 자주 식사를 거른다. 오늘은 슈퍼마켓에 간다. 하지만 간식 대신 그래프를 집는다.

Bash는 정점과 간선의 수가 적은 가중 무방향 그래프만 좋아한다. 더 정확히는 정점이 최대 $72$개, 간선이 최대 $2525$개인 가중 무방향 그래프만 좋아한다.

Chikapu는 간선이 더 적은 가중 무방향 그래프만 좋아한다. 더 정확히는 정점이 최대 $88$개, 간선이 최대 $214$개인 가중 무방향 그래프만 좋아한다.

Bash와 Chikapu는 슈퍼마켓 주인인 Mr. Graph Maker에게 $0$ 이상 $10^{18}$ 이하인 정수 $A$를 준다. 각 그래프에서 정점 $1$에서 정점 $2$로 가는 최단 경로의 개수가 정확히 $A$인 그래프 두 개를 요청한다. (각 그래프에는 적어도 두 정점이 있어야 하며, 정점 번호는 $1$부터 시작한다.) Mr. Graph Maker에게 조금 더 도전적인 문제가 되도록, 두 그래프 모두 자기 루프나 중복 간선을 포함해서는 안 된다. 물론 첫 번째 그래프는 Bash의 취향을, 두 번째 그래프는 Chikapu의 취향을 만족해야 한다. 정점과 간선의 수에 대한 취향은 위에서 설명한 것과 같다.

Mr. Graph Maker가 이 그래프들을 만드는 것을 도와라.

참고

그래프 $G=(V,E)$가 주어졌을 때 정점 $u$에서 정점 $v$로 가는 경로는 간선 수열 $(a_0,a_1),(a_1,a_2),\ldots,(a_{k-1},a_k)$로 정의하며, 다음을 만족한다:

  • $a_0=u$,

  • $a_k=v$,

  • $(a_{i-1},a_i)\in E$.

경로의 가중치는 그 경로의 모든 간선 가중치의 합이다.

$u$에서 $v$로 가는 최단 경로는 $u$에서 $v$로 가는 경로 중 가중치가 가장 작은 경로이다.

두 경로의 간선 수열이 다를 때, 그리고 그때에만 두 경로는 서로 다르다고 본다.

입력

입력은 최대 $101$줄이다. 마지막 줄을 제외한 각 줄에는 테스트 케이스를 나타내는 정수 $A$ ($0\le A\le10^{18}$)가 주어진다. 마지막 줄에는 테스트 케이스가 아닌 수 $-1$이 주어진다.

출력

각 테스트 케이스에 대해:

  • Bash가 요청한 그래프를 만들 수 없다면 단어 NO가 있는 한 줄을 출력한다.

  • 그렇지 않으면 단어 YES가 있는 한 줄을 출력한다. 다음 줄에 Bash의 그래프의 정점 수와 간선 수인 두 정수 $N,M$ ($2\le N\le72$, $0\le M\le2525$)을 출력한다. 다음 $M$줄에는 각각 세 정수 $u,v,c$를 출력하며, 이는 정점 $u,v$를 연결하고 가중치가 $c$인 간선을 나타낸다. ($1\le u,v\le N$, $1\le c\le10^9$.)

  • Chikapu가 요청한 그래프를 만들 수 없다면 단어 NO가 있는 한 줄을 출력한다.

  • 그렇지 않으면 단어 YES가 있는 한 줄을 출력한다. 다음 줄에 Chikapu의 그래프의 정점 수와 간선 수인 두 정수 $N,M$ ($2\le N\le88$, $0\le M\le214$)을 출력한다. 다음 $M$줄에는 각각 세 정수 $u,v,c$를 출력하며, 이는 정점 $u,v$를 연결하고 가중치가 $c$인 간선을 나타낸다. ($1\le u,v\le N$, $1\le c\le10^9$.)

그래프에는 자기 루프나 중복 간선이 없어야 하며, $1$에서 $2$로 가는 최단 경로의 개수는 $A$여야 한다.

예제

입력 1

1
3
-1

출력 1

YES
2 1
1 2 100
YES
3 2
1 3 1000
3 2 10000
YES
5 6
1 3 1
3 2 1
1 4 1
4 2 1
1 5 1
5 2 1
YES
5 6
1 3 1
3 2 1
1 4 1
4 2 1
1 5 1
5 2 1

참고

예제 1에서 Bash에게 주어진 그래프:

problem_20131_2a464600353e809580037ed168959efc.png

예제 1에서 Chikapu에게 주어진 그래프:

problem_20131_f6e3cb98dbf044c126f380b5f729c05e.png

예제 2에서 Bash와 Chikapu 둘 모두에게 주어진 그래프:

problem_20131_0805ccd09319460d91b39f081a44bd08.png

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.