我的图论还是只会套模板 嘤嘤嘤

题目描述

The BAPC draws a large number of visitors to Amsterdam. Many of these people arrive at the train station, then walk from intersection to intersection through the streets of Amsterdam in a big parade until they reach the BAPC location.

A street can only allow a certain number of people per hour to pass through. This is called the capacity of the street. The number of people going through a street must never exceed its capacity, otherwise accidents will happen. People may walk through a street in either direction.

The BAPC organizers want to prepare a single path from train station to BAPC location. They choose the path with maximum capacity, where the capacity of a path is defined to be the minimum capacity of any street on the path. To make sure that nobody walks the wrong way, the organizers close down the streets which are incident

1 to an intersection on the path,but not part of the path.

Can you write a program to help the organizers decide which streets to block? Given a graph of the streets and intersections of Amsterdam, produce the list of streets that need to be closed down in order to create a single maximum-capacity path from the train station to the BAPC. The path must be simple, i.e. it may not visit any intersection more than once.

输入

• The first line contains two integers: n, the number of intersections in the city, and m,the number of streets (1 ≤ n, m ≤ 1000).

• The following m lines each specify a single street. A street is specified by three integers, ai, bi and ci, where ai and bi are ids of the two intersections that are connected by this street (0 ≤ ai, bi < n) and ci is the capacity of this street (1 ≤ ci ≤ 500000). Streets are numbered from 0 to m − 1 in the given order.

You may assume the following:

• All visitors start walking at the train station which is the intersection with id 0. The BAPC is located at the intersection with id n − 1.

• The intersections and streets form a connected graph.

• No two streets connect the same pair of intersections.

• No street leads back to the same intersection on both ends.

• There is a unique simple path of maximum capacity.

输出

Output a single line containing a list of space separated street numbers that need to be blocked in order to create a single maximum-capacity path from train station to BAPC. Sort these street numbers in increasing order.

If no street must be blocked, output the word “none” instead.

样例输入

7 10

0 1 800

1 2 300

2 3 75

3 4 80

4 5 50

4 6 100

6 1 35

0 6 10

0 2 120

0 3 100

样例输出

0 2 4 6 7 8

审题!不要看到流量就差点把网络流模板套上去了!

首先思考怎样才能使流量最大呢?就要让这条路上最小的边最大,然后就想到最大生成树。

审题!为什么1 2不用封,因为他不想让人走岔路,所以正确道路上的所有岔路都要封住,其他不用管。找到正确道路了怎么办?用一个bfs标记每个点的父亲,然后再用dfs从汇点开始向上找源点,于是就找到了这条道路的点。然后再判断边是否与该点相连。

#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
const int maxn=1010;
int N,M;
int fa[maxn];
int dist[maxn][maxn];
struct edge
{
int u,v,w,id;
edge(int u=0,int v=0,int w=0):u(u),v(v),w(w){}
}e[maxn];
int getfather(int x)
{
if(x==fa[x]) return x;
else return fa[x]=getfather(fa[x]);
}
bool cmp(edge x,edge y)
{
return x.w>y.w;
}
void kruscal()
{
sort(e,e+M,cmp);
int cnt=0;
for(int i=0;i<N;i++){
fa[i]=i;
}
for(int i=0;i<M;i++){
int t1=getfather(e[i].u);
int t2=getfather(e[i].v);
if(t1!=t2){
fa[t1]=t2;
dist[e[i].u][e[i].v]=dist[e[i].v][e[i].u]=e[i].w;
cnt++;
}
if(cnt==N-1) break;
}
return ;
}
bool vis[maxn];
int d[maxn];
int ans[maxn][maxn];
bool selct[maxn];
bool del[maxn];
queue<int>q;
void bfs(int u)
{
q.push(u);
vis[u]=true;
while(!q.empty()){
u=q.front();
q.pop();
for(int i=0;i<N;i++){
if(!vis[i]&&dist[u][i]>0){
d[i]=u;
vis[i]=true;
q.push(i);
}
}
}
}
void dfs(int u){
int v=d[u];
del[u]=1;
if(v==0){
ans[0][u]=1;
ans[u][0]=1;
del[0]=1;
return;
}
else{
ans[v][u]=1;
ans[u][v]=1;
dfs(v);
}
return;
}
int main()
{
int u,v,w;
//freopen("in.txt","r",stdin);
scanf("%d%d",&N,&M);
for(int i=0;i<M;i++){
scanf("%d%d%d",&u,&v,&w);
edge k(u,v,w);
k.id=i;
e[i]=k;
}
kruscal();
bfs(0);
dfs(N-1);
bool flag=0;
//for(int i=0;i<N;i++) cout<<del[i]<<" ";
//cout<<endl;
for(int i=0;i<M;i++){
if(del[e[i].u]||del[e[i].v])
if(ans[e[i].u][e[i].v]==0){
selct[e[i].id]=true;
flag=1;
}
}
if(flag)
for(int i=0;i<M;i++){
if(selct[i]){
printf("%d ",i);
}
}
else{
printf("none");
}
printf("\n");
//fclose(stdin);
return 0;
}

Crowd Control的更多相关文章

  1. Crowd Control(输出不在最大值最小化的最短路上的边)

    题意: 就是求完最大值最小化  然后输出在这条最大值最小化的最短路上的点的不在最短路上的边,emm.... 解析: 很明显,先套spfa最大值最小化模板,emm... 在更新d的时候 用一个pre去记 ...

  2. BAPC2017

    Benelux Algorithm Programming Contest 2017 参考资料: https://blog.csdn.net/sizaif/article/details/798586 ...

  3. Atlassian 系列软件安装(Crowd+JIRA+Confluence+Bitbucket+Bamboo)

    公司使用的软件开发和协作工具为 Atlassian 系列软件,近期需要从腾讯云迁移到阿里云环境,简单记录下安装和配置过程.(Atlassian 的文档非常详尽,过程中碰见的问题都可以找到解决办法.) ...

  4. 企业管理软件开发架构之七 Object Control设计与运用

    在做查询时,经常遇到一类需求.请看下面的SQL语句查询 SELECT * FROM Company WHERE CompanyCode='Kingston' AND Suspended='N' AND ...

  5. 文字处理控件TX Text Control的使用

    这几天一直在研究TX Text Control的使用,由于这方面的资料相对比较少,主要靠下载版本的案例代码进行研究,以及官方的一些博客案例进行学习,使用总结了一些心得,特将其总结出来,供大家分享学习. ...

  6. Sublime text 2/3 中 Package Control 的安装与使用方法

    Package Control 插件是一个方便 Sublime text 管理插件的插件,但因为 Sublime Text 3 更新了 Python 的函数,API不同了,导致基于 Python 开发 ...

  7. Java 性能分析工具 , 第 3 部分: Java Mission Control

    引言 本文为 Java 性能分析工具系列文章第三篇,这里将介绍如何使用 Java 任务控制器 Java Mission Control 深入分析 Java 应用程序的性能,为程序开发人员在使用 Jav ...

  8. Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details

    thinkphp 在Apache上配置启用伪静态,重启Apache1 restart 竟然失败了,报错 Job for httpd.service failed because the control ...

  9. Neural Pathways of Interaction Mediating the Central Control of Autonomic Bodily State 自主神经系统-大脑调节神经通路

    Figure above: Critchley H D, Harrison N A. Visceral influences on brain and behavior[J]. Neuron, 201 ...

随机推荐

  1. Essay写作“短路”怎么办?

    有些留学生在完成essay写作过程中可能会短路,写着写着不知道自己在写什么,或者是直接动不了笔了,这种情况下应该怎么办呢?下面Australiaway小编就跟同学们分享一些比较有用的方法,希望可以帮到 ...

  2. C语言编程实现SYN-Flood(Dos)攻击

    ## 实验环境为了方便,直接在win10 VS2013Ultimate实现(攻击机),靶机为同一局域网的另外一台主机或外网服务器.   ## 实验依赖基于WinPcap实现,需要安装WinPcap4. ...

  3. Invalid bound statement (not found): com.xxxx.dao.other.LoginDao.getUser"

    原来是能正常运行的,后想把登录相关的调整一下目录,对应登录的文件都调整到了other下边,启动服务,请求时报错: Invalid bound statement (not found): com.xx ...

  4. English Words and Expressions

    Words apprentice 学徒 corny 老套的 obnoxious 作呕的 intermezzo 间奏曲 predate 日期上早于 parenthesis 括号 delimiter 分隔 ...

  5. caffe + ssd网络训练过程

    參考博客:https://blog.csdn.net/xiao_lxl/article/details/79106837 1获取源代码:git clone https://github.com/wei ...

  6. Git--rebase合并提交

    参考 https://blog.csdn.net/hj7jay/article/details/78809547 https://blog.csdn.net/yangcs2009/article/de ...

  7. JSP变量、方法和类的声明,JSP程序片,JSP表达式

    参考文章 http://c.biancheng.net/view/1431.html http://c.biancheng.net/view/1433.html http://c.biancheng. ...

  8. 2020.2.21一些python总结

    #字符串前面加r可以防止字符串转义 \也可以防止字符串转义#三引号可以实现输入多行文本#range(start,end,step)#列表 append添加一个元素到末尾 extend 添加一个素组到末 ...

  9. UML-用例关联

    1.用例关联:就是各个用例之间的关系,分3种关系分别是:包含关系.扩展关系.泛化关系. 2.包含关系 1).示例 2).使用场景 A.用例在其他用例中重复使用 B.用例非常复杂冗长,将其分解为子单元便 ...

  10. UML-迭代2:更多模式

    1.之前的初始阶段+细化阶段中的迭代1讲述的是广泛使用的基本分析和对象设计技术.而迭代2中,案例研究只强调: 对象设计和模式: 1).基本对象设计(基于职责和GRASP) 2).使用模式来创建稳固的设 ...