背景

看到Vijos上此类型的题目较少,特地放一道上来给大家练练。

描述

由于yxy小朋友做了一些不该做的事,他被jzp关进了一个迷宫里。由于jzp最近比较忙,疏忽大意了一些,yxy可以在迷宫中任意走动。整个迷宫可以被看作是一个无向图。迷宫中有一些结点有传送点,可以让他逃离这个迷宫。jzp发明了一种机器人,可以监视迷宫中的道路,被监视的道路yxy不能通过,我们简单的认为监视一条道路的代价即为这条道路的长度。现在jzp正在忙,请你编一个程序算出使yxy无法逃离迷宫的最小监控总代价。(yxy一开始在1号结点)

格式

输入格式

第1行:两个自然数n和e,分别表示迷宫的节点数和边数。

第2至e+1行:每行三个自然数a、b和w,表示a和b之间有一条道路,长度为w。

第e+2行:一个自然数m,表示有传送点结点的个数。

第e+3行:m个自然数,表示有传送点的结点。

输出格式

一个自然数,表示最小监视总代价。

样例1

样例输入1

5 5
1 2 1
1 3 2
2 5 3
2 3 3
3 4 2
2
4 5

样例输出1

3

限制

每个测试点1s

提示

n<100,e<300,m<n
1<=a,b<=n
w<=maxint

来源

经典问题改编

最大流

屠龙宝刀点击就送

#include <cstring>
#include <cstdio>
#include <queue>
#define inf 1e9
#define Max 150 using namespace std;
struct node
{
int next,to,dis;
}edge[Max*Max];
int Answer,head[Max*Max],cnt=,n,m,e,dep[Max*Max];
void add(int u,int v,int l)
{
node*w=&edge[++cnt];
w->next=head[u];
w->to=v;
w->dis=l;
head[u]=cnt;
}
bool bfs(int s,int t)
{
for(int i=;i<=n;++i) dep[i]=inf;
dep[s]=;
queue<int>q;
q.push(s);
while(!q.empty())
{
int tp=q.front();
q.pop();
for(int i=head[tp];i;i=edge[i].next)
{
int v=edge[i].to;
if(dep[v]>dep[tp]+&&edge[i].dis)
{
dep[v]=dep[tp]+;
if(v==t) return ;
q.push(v);
}
}
}
return ;
}
int dfs(int s,int t,int came_flow)
{
if(s==t||came_flow==) return came_flow;
int res=,f;
for(int i=head[s];i;i=edge[i].next)
{
int v=edge[i].to;
if(dep[v]==dep[s]+&&edge[i].dis&&(f=dfs(v,t,min(came_flow,edge[i].dis))))
{
res+=f;
came_flow-=f;
edge[i].dis-=f;
edge[i^].dis+=f;
}
if(came_flow==) break;
}
return res;
}
int dinic(int s,int t)
{
while(bfs(s,t)) Answer+=dfs(s,t,inf);
return Answer;
}
int main()
{
scanf("%d%d",&n,&e);
for(int x,y,z;e--;)
{
scanf("%d%d%d",&x,&y,&z);
add(x,y,z);
add(y,x,z);
}
scanf("%d",&m);
for(int x;m--;)
{
scanf("%d",&x);
add(x,n,inf);
add(n,x,inf);
}
printf("%d",dinic(,n));
return ;
}

vijos 1524 最小监视代价的更多相关文章

  1. [vijos P1524] 最小监视代价

    历时四天(本周三至本周六),本人的第一道网络流题目终于通过了…虽然这么慢才搞懂很大程度是因为脑子笨,但是还是要吐槽一下: (1)选的这道题吧居然是无向图,对于初学者我表示呵呵,昨晚到现在一直在纠结怎么 ...

  2. Vijos 1456 最小总代价 (状压dp)

    看到这道题n只有16,就可以想到状压dp 每个人只有经过或者没经过,那就用1表示经过,0表示没经过 但是不是当前在谁那里,所以再加一维来记录 所以f[state][i]表示在物品在i,当前的状态是st ...

  3. lintcode: 最小调整代价

    题目 最小调整代价 给一个整数数组,调整每个数的大小,使得相邻的两个数的差小于一个给定的整数target,调整每个数的代价为调整前后的差的绝对值,求调整代价之和最小是多少. 样例 对于数组,最小的调整 ...

  4. 【网络流24题】 No.12 软件补丁问题(最小转移代价 最短路)

    [题意] T 公司发现其研制的一个软件中有 n 个错误, 随即为该软件发放了一批共 m 个补丁程序. 每一个补丁程序都有其特定的适用环境, 某个补丁只有在软件中包含某些错误而同时又不包含另一些错误时才 ...

  5. 最小总代价 状压DP

    描述 n个人在做传递物品的游戏,编号为1-n. 游戏规则是这样的:开始时物品可以在任意一人手上,他可把物品传递给其他人中的任意一位:下一个人可以传递给未接过物品的任意一人. 即物品只能经过同一个人一次 ...

  6. BZOJ 3399 [Usaco2009 Mar]Sand Castle城堡:贪心【最小匹配代价】

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3399 题意: 给你一个数列a,和一个可变换顺序的序列b(数列长度≤25000). a增加一 ...

  7. [程序员代码面试指南]递归和动态规划-最小编辑代价(DP)

    问题描述 输入 原字符串StrOrg,目标字符串StrTarget,插入.删除.替换的编辑代价ic,dc,rc.输出将原字符串编辑成目标字符串的最小代价. 解题思路 状态表示 dp[i][j]表示把s ...

  8. VJP1456 最小总代价(状压)

    链接 这题卡了一天  刚开始没考虑第一个传的和最后一个传的 感觉挺简单 啪啪的敲完 居然还过了17组数据.. 正解:dp数组一维保存状态 一维保存当前传到了谁 再枚举是由谁传过来的 这样可以保证正确性 ...

  9. vijo 1456最小总代价

    题意:中文题... 题解:状态比较多,可以说是状压的基础题吧,我们定义dp[i][j],j为一个二进制数,每位0表示接触过该物品,1表示没有接触过;j表示当前物品在谁手上.递推的顺序注意一下就好 ac ...

随机推荐

  1. Flutter实战视频-移动电商-14.首页_url_launcher一键拨打店长电话

    14.首页_url_launcher一键拨打店长电话 首页拨打电话的功能. 接收连个值,一个是店长的头像,一个是电话号码, 然后开始写我们的build方法.点击图片的时候要有一个拨打电话的动作.我们要 ...

  2. Identity Server 4 原理和实战(完结)_为 MVC 客户端刷新 Token

    服务端修改token的过期使劲为60秒 过期了 仍然还能获取到api1的资源 api1,设置每隔一分钟就验证token 并且要求token必须要有超时时间这个参数, 1分钟后提示超时,两边都是一分钟, ...

  3. js 调用栈机制与ES6尾调用优化介绍

    调用栈的英文名叫做Call Stack,大家或多或少是有听过的,但是对于js调用栈的工作方式以及如何在工作中利用这一特性,大部分人可能没有进行过更深入的研究,这块内容可以说对我们前端来说就是所谓的基础 ...

  4. Git之通过ssh clone代码

    1.git平台:码云 2.服务器系统:Linux 1.在Linux中创建ssh公钥,将创建的公钥添加到码云的ssh公钥管理 2.一般来说我们配置完站点之后,都会生成一个站点对应的文件夹,进入文件夹,然 ...

  5. jqgrid 不能选中行, 每次点击单元格都自动选中第一行

    最使用jqgrid表格插件写了一个功能.功能完成后显示一切正常,但是经过测试后发现,每次点击数据行时,都会自动选中第一行,无法选中其他数据行.经过一番探索,最终发现是加载进来的字段没有主键导致了这个问 ...

  6. WindowsService服务程序开发 安装和卸载

    安装服务:installutil.exe E:\XTestDemo\X_15_WindowsService\bin\Debug\X_15_WindowsService.exe 卸载服务:install ...

  7. P5175 数列(矩阵加速)

    //minamoto #include<bits/stdc++.h> #define R register #define ll long long #define fp(i,a,b) f ...

  8. 【UVA - 10815】Andy's First Dictionary (set)

    Andy's First Dictionary Description 不提英文了 直接上中文大意吧 XY学长刚刚立下了再不过CET就直播xx的flag,为了不真的开启直播模式,XY学长决定好好学习英 ...

  9. ZOJ1221 Risk

    Description Risk is a board game in which several opposing players attempt to conquer the world. The ...

  10. H - F(x)

    #include <iostream> #include <algorithm> #include <cstring> #include <cstdio> ...