QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#137958#6523. Escape PlanYarema#RE 0ms17628kbC++171.6kb2023-08-10 19:46:372023-08-10 19:46:39

Judging History

你现在查看的是最新测评结果

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-08-10 19:46:39]
  • 评测
  • 测评结果:RE
  • 用时:0ms
  • 内存:17628kb
  • [2023-08-10 19:46:37]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;

#define SZ(a) (int)a.size()
#define ALL(a) a.begin(), a.end()
#define FOR(i, a, b) for (int i = (a); i<(b); ++i)
#define RFOR(i, b, a) for (int i = (b)-1; i>=(a); --i)
#define MP make_pair
#define PB push_back
#define F first
#define S second
#define FILL(a, b) memset(a, b, sizeof(a))

typedef long long LL;
typedef pair<int, int> PII;
typedef vector<int> VI;

const int N = 200447;
vector<pair<int, LL>> g[N];
multiset<LL> dis[N];
bool used[N];
int d[N];

void solve()
{
	int n, m, k;
	cin >> n >> m >> k;
	set<pair<LL, int>> q;
	FOR (i, 0, k)
	{
		int v;
		cin >> v;
		v--;
		q.insert({0, v});
	}
	FOR (i, 0, n)
	{
		cin >> d[i];
	}
	FOR (i, 0, m)
	{
		int a, b, w;
		cin >> a >> b >> w;
		a--, b--;
		g[a].PB({b, w});
		g[b].PB({a, w});
	}
	LL ans = -1;
	while (!q.empty())
	{
		int v = q.begin()->S;
		LL D = q.begin()->F;
		if (v == 0) 
		{
			ans = D;
		}
		q.erase(q.begin());
		assert(!used[v]);
		used[v] = 1;
		for (auto [to, w] : g[v])
		{
			if (used[to]) continue;
			if (SZ(dis[to]) > d[to])
				q.erase(MP(*dis[to].rbegin(), to));
			dis[to].insert({D + w});
			if (SZ(dis[to]) > d[to])
			{
				if (SZ(dis[to]) > d[to] + 1)
					dis[to].erase(prev(dis[to].end()));
				q.insert(MP(*dis[to].rbegin(), to));
			}
		}
	}
	cout << ans << '\n';
	FOR (i, 0, n)
	{
		g[i].clear();
		dis[i].clear();
		used[i] = 0;
	}
}

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	
	int t;
	cin >> t;
	while (t--)
	{
		solve();
	}
	return 0;
}

詳細信息

Test #1:

score: 100
Accepted
time: 0ms
memory: 17628kb

input:

2
3 4 1
3
1 1 1
1 2 1
1 2 2
2 3 1
2 3 2
3 2 2
2 3
2 0 0
1 2 1
1 3 1

output:

4
-1

result:

ok 2 number(s): "4 -1"

Test #2:

score: -100
Dangerous Syscalls

input:

100
100 1808 2
94 47
3 3 0 2 4 3 3 4 0 0 2 2 2 3 2 4 0 2 3 4 4 2 0 3 4 3 1 0 2 1 2 2 0 3 4 4 4 1 2 2 3 1 0 0 3 1 4 2 1 3 3 4 3 0 4 1 0 3 2 1 4 4 1 3 2 3 3 3 3 1 0 3 0 4 3 1 0 4 0 4 4 1 2 0 0 4 1 3 3 3 0 2 2 1 1 2 3 4 1 2
72 29 1138
59 78 2398
95 5 1610
32 46 4176
36 99 8143
100 69 413
61 58 1595
9 9...

output:


result: