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';
                                          ^