bzoj1266最短路+最小割
本来写了spfa
wa了
看到网上有人写Floyd过了
表示不开心 ̄へ ̄
改成Floyd试试。。。
还是wa
ヾ(。`Д´。)原来是建图错了(样例怎么过的)
结果T了
于是把Floyd改回spfa
还是T了
。。。
 ̄へ ̄
看来问题不在最短路,改回Floyd(mdzz)
。。。
好像dinic有点问题
( ⊙ o ⊙ )A了
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define M 510
#define S 1
#define T n
#define INF 1000000000
using namespace std;
struct edge{
int x,y,f,c;
}e[];
int n,m,ans,i,j,k,x,y,z;
int map[M][M];
int head[M],tot=;
int dpt[M];
struct abcd{
int to,next,f;
}table[<<];
void add(int x,int y,int z)
{
table[++tot].to=y;
table[tot].f=z;
table[tot].next=head[x];
head[x]=tot;
table[++tot].to=x;
table[tot].f=;
table[tot].next=head[y];
head[y]=tot;
}
bool bfs()
{
static int q[M];
int i,r=,h=;
memset(dpt,-,sizeof dpt);
dpt[S]=;q[++r]=S;
while(r!=h)
{
int x=q[++h];
for(i=head[x];i;i=table[i].next)
if(table[i].f&&!~dpt[table[i].to])
{
dpt[table[i].to]=dpt[x]+;
q[++r]=table[i].to;
if(table[i].to==T)
return true;
}
}
return false;
}
int dfs(int x,int flow)
{
int i,left=flow;
if(x==T) return flow;
for(i=head[x];i&&left;i=table[i].next)
if(table[i].f&&dpt[table[i].to]==dpt[x]+)
{
int temp=dfs(table[i].to,min(left,table[i].f) );
left-=temp;
table[i].f-=temp;
table[i^].f+=temp;
}
if(left) dpt[x]=-;
return flow-left;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
map[i][j]=INF;
for(i=;i<=n;i++)
map[i][i]=;
for(i=;i<=m;i++)
{
scanf("%d%d%d%d",&x,&y,&z,&e[i].c);
e[i].x=x;e[i].y=y;e[i].f=z;
map[x][y]=map[y][x]=z;
}
for(k=;k<=n;k++)
for(i=;i<=n;i++)
for(j=;j<=n;j++)
map[i][j]=min(map[i][j],map[i][k]+map[k][j]);
printf("%d\n",map[][n]);
for(i=;i<=m;i++)
{
x=e[i].x;y=e[i].y;z=e[i].f;
if( map[][x]+map[y][n]+z==map[][n] )
add(x,y,e[i].c);
if( map[][y]+map[x][n]+z==map[][n] )
add(y,x,e[i].c);
}
while( bfs() )
ans+=dfs(,INF);
printf("%d",ans);
return ;
}
bzoj1266最短路+最小割的更多相关文章
- 【bzoj1266】[AHOI2006]上学路线route 最短路+最小割
题目描述 可可和卡卡家住合肥市的东郊,每天上学他们都要转车多次才能到达市区西端的学校.直到有一天他们两人参加了学校的信息学奥林匹克竞赛小组才发现每天上学的乘车路线不一定是最优的. 可可:“很可能我们在 ...
- BZOJ1266 AHOI2006上学路线(最短路+最小割)
求出最短路后找出可能在最短路上的边,显然割完边后我们需要让图中这样的边无法构成1到n的路径,最小割即可,非常板子. #include<iostream> #include<cstdi ...
- BZOJ1266:上学路线route (最短路+最小割)
可可和卡卡家住合肥市的东郊,每天上学他们都要转车多次才能到达市区西端的学校.直到有一天他们两人参加了学校的信息学奥林匹克竞赛小组才发现每天上学的乘车路线不一定是最优的. 可可:“很可能我们在上学的路途 ...
- 【求出所有最短路+最小割】【多校第一场】【G题】
题意 A从1要追在N的 B 只能走最短的路 问B最少切断多少条路可以让A不能过来 问B最多切断多少条路A还是能过来 对于1 求出1到N的所有最短路的路径,对其求最小割 对于2 求出长度最小的最短路即可 ...
- HDU 5889 Barricade(最短路+最小割)
http://acm.hdu.edu.cn/showproblem.php?pid=5889 题意: 给出一个图,帝国将军位于1处,敌军位于n处,敌军会选择最短路到达1点.现在帝国将军要在路径上放置障 ...
- BZOJ 1266 上学路线(最短路+最小割)
给出n个点的无向图,每条边有两个属性,边权和代价. 第一问求1-n的最短路.第二问求用最小的代价删边使得最短路的距离变大. 对于第二问.显然该删除的是出现在最短路径上的边.如果我们将图用最短路跑一遍预 ...
- HDU 5889 Barricade(最短路+最小割水题)
Barricade Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total ...
- 2019 Multi-University Training Contest 1 E Path(最短路+最小割)
题意 链接:https://vjudge.net/problem/HDU-6582 给定一个有向图,可以有重边,每条边上有一个权值表示删掉这条边的代价,问最少花费多少代价能使从s到t节点的最短路径增大 ...
- 2019HDU多校Path——最短路最小割
题目 给出一个 $n$ 个顶点 $m$ 条边的图,要求阻塞一些边,使得从 $1$ 到 $n$ 的最短路变长,求阻塞的边长度和的最小值,不必保证阻塞后可达. 分析 很显然,要阻塞的边肯定在最短路图上,先 ...
随机推荐
- 超详细Web前端开发规范文档
http://www.w3cfuns.com/notes/26488/c2ae788c77f835357025026a148b9863.html
- bzoj4398:福慧双修
学习了一下最短路的姿势,这个建图方法好妙啊,虽然不会证明正确性…… #include <bits/stdc++.h> #define N 220000 #define INF 100000 ...
- github添加ssh方法(windows版)
生成一个新的SSH key 打开 git bash 输入 ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 输入一个文件 ...
- Django模板与Vue.js冲突问题
参考: https://my.oschina.net/soarwilldo/blog/755984 方法1:修改vue.js的默认的绑定符号 Vue.config.delimiters = [&quo ...
- DevExpress 创建EXCEL
添加库引用:DevExpress.Data.v13.1.dll. DevExpress.Docs.v13.1.dll.DevExpress.Office.v13.1.Core.dll. DevExpr ...
- Swift 定义函数 参数 返回值
定义多参数函数 - 用func声明函数 func name(parameters) -> return type { function body } func halfOpenRangeLen ...
- JS获取浏览器窗口大小 获取屏幕,浏览器,网页高度宽度
网页可见区域宽:document.body.clientWidth 网页可见区域高:document.body.clientHeight 网页可见区域宽:document.body.offsetWid ...
- ASP.NET MVC 设置Area中 Controller 的方法 默认启动页
MVC中通常分区域编程,互不干扰,如果需要设置某个区域下面的某个控制器下面的某个方法为默认启动页的话,直接修改项目的路由如下: public static void RegisterRoutes(Ro ...
- iOS推送小结(证书的生成、客户端的开发、服务端的开发)
1.推送过程简介 1.1.App启动过程中,使用UIApplication::registerForRemoteNotificationTypes函数与苹果的APNS服务器通信,发出注册远程推送的申请 ...
- R语言环境安装与基本使用
R语言安装包可以从这个地址选择合适的URL去下载:https://cran.r-project.org/mirrors.html,这里使用这个https://mirrors.tuna.tsinghua ...