Submission #2861058
Source Code Expand
#include <bits/stdc++.h> using namespace std; const int N = 1e5 + 5; const int inf = 2e9; int n, m; vector<int> adj[N], col[N], imp[N]; vector<int> f[N]; int main() { ios_base::sync_with_stdio(false); cin >> n >> m; for (int i = 1; i <= m; ++i) { int u, v, c; cin >> u >> v >> c; col[u].push_back(c), col[v].push_back(c); imp[u].push_back(adj[v].size()), imp[v].push_back(adj[u].size()); adj[u].push_back(v), adj[v].push_back(u); } for (int i = 1; i <= n; ++i) { f[i].assign(adj[i].size(), (i == 1 ? 1 : inf)); } priority_queue<pair<int, pair<int,int> > , vector<pair<int, pair<int,int> > >, greater<pair<int, pair<int,int> > > > pq; for (int i = 0; i < adj[1].size(); ++i) pq.push({1, {1, i}}); while (!pq.empty()) { auto cur = pq.top(); pq.pop(); int u = cur.second.first, id = cur.second.second; if (f[u][id] != cur.first) continue; if (u == n) return cout << f[u][id] << '\n'; for (int i = 0; i < adj[u].size(); ++i) { int nu = adj[u][i], nid = imp[u][i]; int add = 1; if (col[u][id] == col[nu][nid]) add = 0; if (f[nu][nid] > f[u][id] + add) { f[nu][nid] = f[u][id] + add; pq.push({f[nu][nid], {nu, nid}}); } } } cout << -1 << '\n'; }
Submission Info
Submission Time | |
---|---|
Task | E - Snuke's Subway Trip |
User | cazick |
Language | C++14 (GCC 5.4.1) |
Score | 0 |
Code Size | 1251 Byte |
Status | CE |
Compile Error
./Main.cpp: In function ‘int main()’: ./Main.cpp:32:42: error: cannot convert ‘std::basic_ostream<char>’ to ‘int’ in return if (u == n) return cout << f[u][id] << '\n'; ^