#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; map adj[100001]; int dist[100001]; int main(void) { cin.tie(0); ios::sync_with_stdio(false); int N, M, Q, A, B; cin >> N >> M >> Q; for (int i = 0; i < M; i++) { cin >> A >> B; int u = A; int v = B; adj[u][v] = 1e9; adj[v][u] = 1e9; } for (int i = 0; i < Q; i++) { cin >> A >> B; int u = A; int v = B; adj[u][v] = i + 1; adj[v][u] = i + 1; } priority_queue > pque; dist[1] = 1e9; pque.push(make_pair(dist[1], 1)); while (!pque.empty()) { int now = pque.top().second; pque.pop(); for (auto it : adj[now]) { int next = it.first; int cost = min(dist[now], it.second); if (dist[next] < cost) { dist[next] = cost; pque.push(make_pair(dist[next], next)); } } } for (int i = 2; i <= N; i++) { if (dist[i] >= 1e9) { cout << -1 << '\n'; } else { cout << dist[i] << '\n'; } } return 0; }