ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Codeforces Round #791 (Div. 2)

2022-05-21 14:00:54  阅读:145  来源: 互联网

标签:cnt 791 int LL Codeforces mid ++ continue Div


比赛链接:

https://codeforces.com/contest/1679

D. Toss a Coin to Your Graph...

题目大意:

一个有向图,每个点有一个权值,从一个点出发,向它可以到达的点进发,总共走 \(k\) 步,\(x\) 为这 \(k\) 步之后经过的所有点的权值的最大值,问 \(x\) 最大能是多少。

思路:

因为最大值是单调的,所以二分答案,记二分的值为 \(x\)。
再去图中找所有值小于 \(x\) 的边,构建一个图,这个图为拓扑图,如果图中中有一个环或者长度大于 \(k\) 的链,那么 \(x\) 一定可以出现。

代码:

#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
#define LL long long
LL n, m, k;
vector <int> a(N), g[N];
bool check(LL x){
	vector <int> in(n + 1);
	int cnt = 0;
	for (int u = 1; u <= n; u ++ ){
		if (a[u] > x) continue;
		cnt ++ ;
		for (auto v : g[u]){
			if (a[v] > x) continue;
			in[v] ++ ;
		}
	}
	vector <int> q;
	for (int v = 1; v <= n; v ++ )
		if (a[v] <= x && !in[v])
			q.push_back(v);
	vector <int> d(n + 1);
	for (int i = 0; i < (int)q.size(); i ++ ){
		int u = q[i];
		d[u] = max(d[u], 1);
		for (auto v : g[u]){
			if (a[v] > x) continue;
			d[v] = max(d[v], d[u] + 1);
			if (!--in[v]) q.push_back(v);
		}
	}
	if (*max_element(d.begin(), d.end()) >= k || cnt > (int)q.size()) return true;
	return false;
}
int main(){
	ios::sync_with_stdio(false);cin.tie(0);
	cin >> n >> m >> k;
	for (int i = 1; i <= n; i ++ )
		cin >> a[i];
	for (int i = 0; i < m; i ++ ){
		int u, v;
		cin >> u >> v;
		g[u].push_back(v);
	}
	LL l = 0, r = 1e9 + 1;
	while (l < r){
		LL mid = l + r >> 1;
		if (check(mid)) r = mid;
		else l = mid + 1;
	}
	cout << (r == (1e9 + 1) ? -1 : r) << "\n";
	return 0;
}

标签:cnt,791,int,LL,Codeforces,mid,++,continue,Div
来源: https://www.cnblogs.com/Hamine/p/16294970.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有