当前位置:网站首页>257. detention of offenders
257. detention of offenders
2022-06-24 23:21:00 【Searching for people far away】
S There are two prisons in the city , There is a total of N Criminals , The numbers are 1∼N.
The relationship between them is naturally very disharmonious .
Many criminals even have a long history of resentment , If the objective conditions are met, conflicts may break out at any time .
We use it “ Resentment value ”( A positive integer value ) To show the level of hatred between two criminals , The greater the value of resentment , The more resentment there is between the two criminals .
If two of them have a complaint value of c Of the criminals were held in the same prison , There will be friction between them , And the influence is c The conflict of .
At the end of each year , The police department will make a list of all the conflicts in prison this year, from the largest to the smallest , Then report to S city Z The mayor .
Busy with business Z The mayor will only look at the impact of the first event on the list , If the impact is bad , He will consider replacing the chief of Police .
In a detailed investigation of N After the contradiction between the criminals , The chief of police felt a lot of pressure .
He is going to redistribute the criminals in two prisons , In order to produce less impact of Conflict Events , So as to keep your own black hat .
Suppose that as long as there is hatred between two criminals in the same prison , Then they must have friction sometime every year .
that , How should criminals be distributed , Can we make Z The conflict the mayor saw had the least impact ? What's the minimum ?
Input format
The first line is two positive integers N and M, It shows the number of criminals and the number of criminals with hatred .
Next M Three positive integers per line aj,bj,cj, Express aj Number and bj There's hatred between criminals , Its complaint value is cj.
Output format
The output, 1 That's ok , by Z The impact of the conflict the mayor saw .
If there is no conflict in prison this year , Please export 0.
Data range
N≤20000,M≤100000
sample input :
4 6
1 4 2534
2 3 3512
1 2 28351
1 3 6618
2 4 1805
3 4 12884
sample output :
3512
Code :
/* ( Two points , To judge a bipartite graph by coloring ) O((N+M)logC) Take the criminal as a point , The hate relationship between criminals is regarded as the undirected edge between points , The weight of the edge is the hate value between criminals . Then the original problem becomes : Divide all points into two groups , Make the maximum weight of the inner edges of each group as small as possible . We are [0,109] Enumerate the maximum edge weights between limit, When limit After fixing , The rest of the problem is : Judge whether all points can be divided into two groups , Make the ownership value greater than limit All the sides are between the groups , Not in the group . That is, it is judged by all points and the ownership value is greater than limit Whether the new graph formed by the edges of is a bipartite graph . We can judge a bipartite graph by coloring , The time complexity is O(N+M), among N It's points ,M It's the number of sides To speed up the algorithm , Let's consider whether we can use binary enumeration limit, Suppose that the minimum value of the final maximum edge weight is Ans: So when limit∈[ans,109] when , All edge weights are greater than limit The edge of , It must be that all edge weights are greater than Ans A subset of the edges of , Therefore, the new graph is also a bipartite graph . When limit∈[0,ans−1] when , because ans Is the minimum value that a new graph can form a bipartite graph , Therefore, by more than limit The new graph formed by the edges of must not be a bipartite graph . So the whole interval has the property of two segments , The dividing point can be divided in two ans Value . */
#include <bits/stdc++.h>
using namespace std;
const int N = 20010, M = 200010;
int n, m;
int h[N], e[M], w[M], ne[M], idx;
int color[N];
void add(int a, int b, int c)
{
e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx++;
}
bool dfs(int u, int c, int mid)
{
color[u] = c;
for (int i = h[u]; ~i; i = ne[i])
{
int j = e[i];
if (w[i] <= mid)
continue;
if (color[j])
{
if (color[j] == c)
return false;
}
else if (!dfs(j, 3 - c, mid))
return false;
}
return true;
}
bool check(int mid)
{
memset(color, 0, sizeof color);
for (int i = 1; i <= n; i++)
if (!color[i])
if (!dfs(i, 1, mid))
return false;
return true;
}
int main()
{
scanf("%d%d", &n, &m);
memset(h, -1, sizeof h);
while (m--)
{
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
add(a, b, c), add(b, a, c);
}
int l = 0, r = 1e9;
while (l < r)
{
int mid = r + l >> 1;
if (check(mid))
r = mid;
else
l = mid + 1;
}
printf("%d\n", r);
return 0;
}
边栏推荐
- laravel 定时任务
- 【js】-【数组、栈、队列、链表基础】-笔记
- 376. 机器任务
- golang convert map to json string
- Dig deep into MySQL - resolve the non clustered index of MyISAM storage engine
- No main manifest attribute in jar
- Docker installation MySQL simple without pit
- Laravel authentication module auth
- #22Map介绍与API
- Financial management [5]
猜你喜欢

Docker installation MySQL simple without pit

File contains vulnerability issues

Getting started with the go Cobra command line tool
How should we measure agile R & D projects?

Concurrent shared model management
![[JS] - [tree] - learning notes](/img/62/de4fa2a7c5e52c461b8be4a884a395.png)
[JS] - [tree] - learning notes
![[JS] - [array, Stack, queue, Link List basis] - Notes](/img/c6/a1bd3b8ef6476d7d549abcb442949a.png)
[JS] - [array, Stack, queue, Link List basis] - Notes

#22Map介绍与API

Pousser l'information au format markdown vers le robot nail

01_ Getting started with the spingboot framework
随机推荐
宁德时代定增450亿:高瓴认购30亿 曾毓群仍控制23%股权
二分查找数组下标
Uncover the secrets of Huawei cloud enterprise redis issue 16: acid'true' transactions beyond open source redis
QT to place the form in the lower right corner of the desktop
Use of laravel verifier
Financial management [6]
Do you need to improve your code reading ability? It's a trick
laravel 消息队列
go Cobra命令行工具入门
golang convert map to json string
RT-thread使用rt-kprintf
Learn about redlock
基本数据类型
Detailed explanation of online group chat and dating platform project (servlet implementation)
Docker installation MySQL simple without pit
Case analysis: using "measurement" to improve enterprise R & D efficiency | ones talk
【js】-【栈、队-应用】-学习笔记
How should we measure agile R & D projects?
What kind of processor architecture is ARM architecture?
Construction equipment [5]