# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
979702 | 2024-05-11T10:08:46 Z | Marcus | 자매 도시 (APIO20_swap) | C++17 | 0 ms | 0 KB |
#include <swap.h> #include <bits/stdc++.h> using namespace std; int n, m; vector<vector<pair<int, int>>> adj; vector<bool> visited; void init(int n1, int m1, vector<int>& v, vector<int>& u, vector<int>& w) { n = n1; m = m1; adj.resize(n+1); visited.resize(n+1); for (int i=0; i<m; i++) { adj[v[i]].push_back({u[i], w[i]}); adj[u[i]].push_back({v[i], w[i]}); } } bool cycle = false; int gas = 0; void dfs(int s, int v) { if (visited[s]) return; visited[s] = true; for (auto u: adj[s]) { if (visited[u.first] && u.first != v) cycle = true; gas = max(gas, u.second); dfs(u.first, s); } } int getMinimumFuelCapacity(int x, int y){ dfs(1, 0); return (cycle ? gas : -1); }