제출 #1190541

#제출 시각아이디문제언어결과실행 시간메모리
1190541Ghulam_JunaidWells (CEOI21_wells)C++20
0 / 100
21 ms588 KiB
#include <bits/stdc++.h> using namespace std; const int N = 205; int n, k, dist[N][N]; vector<int> g[N], vec; int main(){ cin >> n >> k; memset(dist, 31, sizeof dist); for (int i = 1; i <= n; i ++) dist[i][i] = 0; for (int i = 0; i < n - 1; i ++){ int u, v; cin >> u >> v; g[u].push_back(v); g[v].push_back(u); dist[u][v] = dist[v][u] = 1; } for (int l = 1; l <= n; l ++) for (int u = 1; u <= n; u ++) for (int v = 1; v <= n; v ++) dist[u][v] = min(dist[u][v], dist[u][l] + dist[l][v]); for (int i = 1; i <= n; i ++){ vec.clear(); for (int v = 1; v <= n; v ++) if (dist[i][v] % k == 0) vec.push_back(v); bool bad_root = 0; for (int u = 1; u <= n; u ++){ for (int v = u + 1; v <= n; v ++){ if (dist[u][v] != k - 1) continue; int cnt = 0; for (int x : vec) cnt += (dist[u][v] == dist[u][x] + dist[x][v]); bad_root |= (cnt != 1); } } if (bad_root) continue; cout << "YES" << endl << 0 << endl; return 0; } cout << "NO" << endl << 0 << endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...