WA #4求助
查看原帖
WA #4求助
482347
ZZQF5677楼主2022/10/25 17:07
// CodeForces submission 114514
#include <bits/stdc++.h>
using namespace std;
long long dist[500005], head[700005], ecnt, ans;
struct Node {
	long long u, v, w, next;
} e[700005];
void add(long long u, long long v, long long w) {
	ecnt++;
	e[ecnt].u = u;
	e[ecnt].v = v;
	e[ecnt].w = w;
	e[ecnt].next = head[u];
	head[u] = ecnt;
}
long long n, m, k;
struct Node2 {
	long long num, id;
	bool operator < (Node2 const &b) const{
		if (b.num == num) {
			return b.id < id;
		}
		return b.num < num;
	}
};
priority_queue<Node2> q;
bool vis[700005];
void dijkstra(long long st) {
	for (long long i = 1; i <= n; i++) {
		dist[i] = 11451419198102147;
	}
	dist[st] = 0;
	q.push((Node2){0, 1});
	while (!q.empty()) {
		long long num = q.top().num;
		long long id = q.top().id;
		q.pop();
		if (vis[id]) {
			continue;
		}
		vis[id] = 1;
		for (long long i = head[id]; i != 0; i = e[i].next) {
			long long v = e[i].v;
			long long w = e[i].w;
			if (dist[id] + w < dist[v]) {
				dist[v] = dist[id] + w;
			}
			q.push((Node2){dist[v], v});
		}
	}
}
int main() {
	/*
	q.push({5, 1});
	q.push({3, 1});
	q.push({2, 3});
	q.push({2, 1});
	cout << q.top().num << " " << q.top().id << "\n";
	*/
	cin >> n >> m >> k;
	for (long long i = 1; i <= m; i++) {
		long long u, v, w;
		cin >> u >> v >> w;
		add(u, v, w);
		add(v, u, w);
	}
	dijkstra(1);
	for (long long i = 1; i <= k; i++) {
		long long v, w;
		cin >> v >> w;
		//cout << "bian liang:" << dist[v] << " " << w << "\n";
		if (dist[v] <= w) {
			ans++;
		}
	}
	cout << ans << "\n";
	return 0;
}
2022/10/25 17:07
加载中...