Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <map>
- #include <algorithm>
- #include <cmath>
- #include <vector>
- using namespace std;
- int n;
- void dfs(int v, vector<vector<int> > &g, int m, vector<bool> &used) {
- used[v] = true;
- for (int i = 0; i < n; ++i) {
- if (g[v][i] <= m && !used[i]) {
- dfs(i, g, m, used);
- }
- }
- }
- int main() {
- ios_base::sync_with_stdio(0);
- cin.tie(0);
- //cout.tie(0);
- cin >> n;
- vector<vector<int> > g(n, vector<int> (n));
- for (int i = 0; i < n; ++i) {
- for (int j = 0; j < n; ++j) {
- cin >> g[i][j];
- }
- }
- int l = -1, r = 1e9;
- while (l + 1 != r) {
- int m = (l + r) / 2;
- vector<bool> used(n);
- dfs(0, g, m, used);
- bool f = true;
- for (int i = 0; i < n; ++i) {
- if (!used[i]) f = false;
- }
- if (f) {
- r = m;
- } else {
- l = m;
- }
- }
- cout << r;
- return 0;
- }
- /*
- 4
- 0 10 12 16
- 11 0 8 9
- 10 13 0 22
- 13 10 17 0
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement