| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 2 초 | 2048 MB | 19 | 14 | 14 | 73.684% |
Bessie has a simple undirected graph with vertices labeled 1ドル\dots N$ (2ドル\le N\le 750$). She generates a depth-first search (DFS) order of the graph by calling the function dfs(1ドル$), defined by the following C++ code. Each adjacency list (adj[$i$] for all 1ドル\le i\le N$) may be permuted arbitrarily before starting the depth first search, so a graph can have multiple possible DFS orders.
vector<bool> vis(N + 1);
vector<vector<int>> adj(N + 1); // adjacency list
vector<int> dfs_order;
void dfs(int x) {
if (vis[x]) return;
vis[x] = true;
dfs_order.push_back(x);
for (int y : adj[x]) dfs(y);
}
You are given the initial state of the graph as well as the cost to change the state of each edge. Specifically, for every pair of vertices $(i,j)$ satisfying 1ドル\le i<j\le N,ドル you are given an integer $a_{i,j}$ (0ドル<|a_{i,j}|\le 1000$) such that
Determine the minimum total cost to change the graph so that $[1,2\dots,N]$ is a possible DFS ordering.
The first line contains $N$.
Then $N-1$ lines follow. The $j-1$th line contains $a_{1,j}, a_{2,j}, \dots, a_{j-1,j}$ separated by spaces.
The minimum cost to change the graph so that $[1,2,\dots, N]$ is a possible DFS ordering.
4 1 2 3 40 6 11
10
Initially, the graph contains no edges. $(1,2),(2,3),(2,4)$ can be added for a total cost of 1ドル+3+6$. The graph now has two possible DFS orderings: $[1,2,3,4],[1,2,4,3]$.
5 -1 10 -2 10 -7 10 -6 -4 -5 10
5
Initially, the graph contains edges $(1,2),(2,3),(2,4),(1,5),(2,5),(3,5)$. Edge $(3,5)$ can be removed for a cost of 5ドル$.
4 -1 -2 300 4 -5 6
9
Initially, the graph contains edges $(1,2),(1,3),(2,4)$. Edge $(2,4)$ can be removed and edge $(1,4)$ can be added for a total cost of 5ドル+4=9$.