Submission #6229243
Source Code Expand
import sys
input = sys.stdin.readline
from scipy.sparse import *
N,M,K = map(int,input().split())
C = input().split()
A,B = [],[]
for _ in range(M):
a,b = map(lambda x: int(x)-1,input().split())
A.append(a)
B.append(b)
graph = csr_matrix(([1]*M,(A,B)),(N,N))
_,labels = csgraph.connected_components(graph,connection='strong')
# 縮約して作り直し
N = labels.max()
alphabets = [[] for _ in range(N+1)]
edges = [set() for _ in range(N+1)]
for i,c in enumerate(C):
alphabets[labels[i]].append(c)
for a,b in zip(A,B):
a1 = labels[a]
b1 = labels[b]
if a1 != b1:
edges[a1].add(b1)
INF = chr(ord('z')+1)
dp = [[INF]*(K+1) for _ in range(N+1)] # 出発、長さ -> 辞書最小
def dfs(x):
if dp[x][0] != INF:
return
alphabets[x].sort()
my_str = ''.join(alphabets[x])[:K]
len_me = len(my_str)
for i in range(len_me+1):
dp[x][i] = my_str[:i]
for y in edges[x]:
dfs(y)
for i in range(len_me+1):
left = my_str[:i]
if left == INF:
break
for j in range(K+1):
if i+j > K:
break
right = dp[y][j]
if right == INF:
break
s = left + right
if dp[x][i+j] > s:
dp[x][i+j] = s
for i in range(N+1):
dfs(i)
answer = INF
for i in range(N+1):
if answer > dp[i][K]:
answer = dp[i][K]
if answer == INF:
answer = '-1'
print(answer)
Submission Info
| Submission Time | |
|---|---|
| Task | C - 有向グラフ |
| User | maspy |
| Language | Python (3.4.3) |
| Score | 100 |
| Code Size | 1588 Byte |
| Status | AC |
| Exec Time | 505 ms |
| Memory | 27064 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 100 / 100 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | subtask0_sample_01.txt, subtask0_sample_02.txt, subtask0_sample_03.txt, subtask0_sample_04.txt |
| All | subtask0_sample_01.txt, subtask0_sample_02.txt, subtask0_sample_03.txt, subtask0_sample_04.txt, subtask1_manual01.txt, subtask1_manual02.txt, subtask1_manual03.txt, subtask1_manual04.txt, subtask1_manual05.txt, subtask1_manual06.txt, subtask1_manual07.txt, subtask1_manual08.txt, subtask1_random01.txt, subtask1_random02.txt, subtask1_random03.txt, subtask1_random04.txt, subtask1_random05.txt, subtask1_special01.txt, subtask1_special02.txt, subtask1_special03.txt, subtask1_special04.txt, subtask1_special05.txt, subtask1_special06.txt, subtask1_special07.txt, subtask1_special08.txt, subtask1_special09.txt, subtask1_special10.txt, subtask1_special11.txt, subtask1_special12.txt, subtask1_special13.txt, subtask1_special14.txt, subtask1_special15.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| subtask0_sample_01.txt | AC | 505 ms | 27064 KiB |
| subtask0_sample_02.txt | AC | 167 ms | 13736 KiB |
| subtask0_sample_03.txt | AC | 170 ms | 13724 KiB |
| subtask0_sample_04.txt | AC | 169 ms | 13728 KiB |
| subtask1_manual01.txt | AC | 168 ms | 13728 KiB |
| subtask1_manual02.txt | AC | 168 ms | 15784 KiB |
| subtask1_manual03.txt | AC | 170 ms | 13736 KiB |
| subtask1_manual04.txt | AC | 169 ms | 13740 KiB |
| subtask1_manual05.txt | AC | 169 ms | 13740 KiB |
| subtask1_manual06.txt | AC | 169 ms | 13740 KiB |
| subtask1_manual07.txt | AC | 169 ms | 13736 KiB |
| subtask1_manual08.txt | AC | 168 ms | 13728 KiB |
| subtask1_random01.txt | AC | 183 ms | 14116 KiB |
| subtask1_random02.txt | AC | 171 ms | 13732 KiB |
| subtask1_random03.txt | AC | 179 ms | 13856 KiB |
| subtask1_random04.txt | AC | 174 ms | 13740 KiB |
| subtask1_random05.txt | AC | 170 ms | 13728 KiB |
| subtask1_special01.txt | AC | 169 ms | 13736 KiB |
| subtask1_special02.txt | AC | 176 ms | 13860 KiB |
| subtask1_special03.txt | AC | 186 ms | 14120 KiB |
| subtask1_special04.txt | AC | 197 ms | 14628 KiB |
| subtask1_special05.txt | AC | 201 ms | 15136 KiB |
| subtask1_special06.txt | AC | 192 ms | 15852 KiB |
| subtask1_special07.txt | AC | 184 ms | 14828 KiB |
| subtask1_special08.txt | AC | 190 ms | 15856 KiB |
| subtask1_special09.txt | AC | 193 ms | 15852 KiB |
| subtask1_special10.txt | AC | 191 ms | 15852 KiB |
| subtask1_special11.txt | AC | 189 ms | 15392 KiB |
| subtask1_special12.txt | AC | 188 ms | 15052 KiB |
| subtask1_special13.txt | AC | 187 ms | 14888 KiB |
| subtask1_special14.txt | AC | 169 ms | 13864 KiB |
| subtask1_special15.txt | AC | 202 ms | 14636 KiB |