【链接】 我是链接,点我呀:)
【题意】

在这里输入题意

【题解】

第一问是个最短路。
第二问。
利用第一问floyd算出来的任意两点之间的最短路。
那么枚举每一条边(x,y)
如果w[1][x]+cost[x][y]+w[y][n]==w[1][n]
那么就说明(x->y)这条边是某条最短路上的必经边。
则我们在一张新的网络中加入(x,y,pi)这条边。
然后我们求这个网络的最小割。
那么1到n就没有办法通过最短路到达了,因为每条最短路都被破坏了。
讨论里好像说有重边。
pre[1]=0不能省。不然貌似会往回走。。

【代码】

#include <bits/stdc++.h>
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define all(x) x.begin(),x.end()
#define pb push_back
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
using namespace std;const double pi = acos(-1);
const int dx[4] = {0,0,1,-1};
const int dy[4] = {1,-1,0,0};
const int M = 15e4;
const int N = 500;
const int INF = 0x3f3f3f3f;struct abc{int x,y,t,p;
};int n,m,w[N+10][N+10],flow[N+10][N+10];
abc bian[M];void add_edge(int x,int y,int z){flow[x][y]+=z;
}queue<int> dl;
int pre[N+10];int main(){#ifdef LOCAL_DEFINEfreopen("rush_in.txt", "r", stdin);#endifios::sync_with_stdio(0),cin.tie(0);memset(w,0x3f3f3f3f,sizeof w);cin >> n >> m;rep1(i,1,n) w[i][i] = 0;rep1(i,1,m) {cin >> bian[i].x >> bian[i].y >> bian[i].t >> bian[i].p;w[bian[i].x][bian[i].y] = min(w[bian[i].x][bian[i].y],bian[i].t);w[bian[i].y][bian[i].x] = min(w[bian[i].y][bian[i].x],bian[i].t);}rep1(k,1,n)rep1(i,1,n)if (i!=k)rep1(j,1,n)if (j!=k && j!= i && w[i][k]+w[k][j]<w[i][j])w[i][j] = w[i][k]+w[k][j];rep1(i,1,m){int x = bian[i].x,y = bian[i].y,v = bian[i].t;if (w[1][x]+w[y][n]+v == w[1][n]){add_edge(x,y,bian[i].p);}if (w[1][y]+w[x][n]+v == w[1][n]){add_edge(y,x,bian[i].p);}}cout<<w[1][n]<<endl;int ans = 0;while (1){memset(pre,255,sizeof pre);while (!dl.empty()) dl.pop();dl.push(1);pre[1] = 0;while (!dl.empty()){int x = dl.front();dl.pop();for (int i = 1;i <= n;i++)if (pre[i]==-1 && x!=i && flow[x][i]>0){pre[i] = x;dl.push(i);if (i==n) break;}}if (pre[n]==-1) break;int temp = 0x3f3f3f3f;int y = n;while (1){int x = pre[y];//cout<<x<<endl;if (x==0) break;temp = min(temp,flow[x][y]);y = x;}y = n;while (1){int x = pre[y];if (x==0) break;flow[x][y]-=temp;flow[y][x]+=temp;y = x;}ans+=temp;}cout<<ans<<endl;return 0;
}

转载于:https://www.cnblogs.com/AWCXV/p/9034337.html

【BZOJ 1266】 [AHOI2006]上学路线route相关推荐

  1. BZOJ 1266: [AHOI2006]上学路线route Floyd算法,网络最小割

    Description 可可和卡卡家住合肥市的东郊,每天上学他们都要转车多次才能到达市区西端的学校.直到有一天他们两人参加了学校的信息学奥林匹克竞赛小组才发现每天上学的乘车路线不一定是最优的. 可可: ...

  2. 洛谷 P4300 BZOJ 1266 [AHOI2006]上学路线route

    题目描述 可可和卡卡家住合肥市的东郊,每天上学他们都要转车多次才能到达市区西端的学校.直到有一天他们两人参加了学校的信息学奥林匹克竞赛小组才发现每天上学的乘车路线不一定是最优的. 可可:"很 ...

  3. BZOJ 1266: [AHOI2006]上学路线route

    Description 可可和卡卡家住合肥市的东郊,每天上学他们都要转车多次才能到达市区西端的学校.直到有一天他们两人参加了学校的信息学奥林匹克竞赛小组才发现每天上学的乘车路线不一定是最优的. 可可: ...

  4. 1266: [AHOI2006]上学路线route

    1266: [AHOI2006]上学路线route Description 可可和卡卡家住合肥市的东郊,每天上学他们都要转车多次才能到达市区西端的学校.直到有一天他们两人参加了学校的信息学奥林匹克竞赛 ...

  5. bzoj1266: [AHOI2006]上学路线route

    最短路+最小割 首先如何使最短路变长?就是要每一条最短路都割一条边. 我们求出每个点到点1和点n的距离,就可以知道哪些边在最短路上(一开始没有想到求到0和n的距离,想用floyd,但是n=500,怕超 ...

  6. bzoj1266【AHOI2006】上学路线route

    1266: [AHOI2006]上学路线route Time Limit: 3 Sec   Memory Limit: 162 MB Submit: 1602   Solved: 559 [ Subm ...

  7. 【BZOJ1266】【AHOI2006】上学路线route 最短路建图转最小割

    题解: 首先那个裸的单源最短路过程就过了吧. 然后说转的最小割. 就是我们考虑到从源点到汇点有多条最短路,我们需要切断一些边,使得所有的最短路都被切断. 首先这是个很裸的模型,切断?最小割! 如果你想 ...

  8. codevs2693 上学路线(施工)

    难度等级:黄金 2693 上学路线(施工) 题目描述 Description 问题描述 你所在的城市街道好像一个棋盘,有a条南北方向的街道和b条东西方向的街道. 南北方向a条街道从西到东依次编号为1到 ...

  9. Codevs 2505 上学路线 (组合数学)

    2505 上学路线 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 钻石 Diamond 题目描述 Description 因为是学生,所以显然小A每天都要上学.小A所在的城市的道路构 ...

最新文章

  1. 建立双链表(尾插法)
  2. 拯救莫莉斯[GDOI2014]
  3. SpringMVC 理论与实用技术(一) 简单、实用、易懂的几个实例
  4. python列表片段_Python列表片段索引操作,python
  5. 最完整的Win7快捷键
  6. python期末知识点_史上最全的Python知识点整理之基本语法
  7. echarts实现双Y轴之散点和折线图
  8. 奥赛金牌计算机博士中学老师,博士教师从6人到27人 硕士教师从103人到190人 石室中学“十四五”规划立下十个flag...
  9. 【Kafka】Window下kafka开启JMX监控
  10. docker启动失败Failed to start Docker Application Container Engine.(centos7)
  11. Spring Security(三十六):12. Spring MVC Test Integration
  12. 银行业会计人员技能训练系统(含文字录入、小键盘、点钞)
  13. ORA-00932: 数据类型不一致: 应为 DATE, 但却获得 NUMBER
  14. 撰写SCI论文好用的免费工具(上) - 易智编译EaseEditing
  15. word2019技巧:段落的段前段后单位行设置为磅
  16. Minecraft 从入门到入坑(边玩游戏边学编程)
  17. 数据库实验三 数据查询二
  18. linux快速入门 快捷高效学习方法
  19. Vue学习--子组件向父组件传值
  20. spring.factories详解

热门文章

  1. bash脚本一条命令直接发送http请求
  2. SQL注入之布尔盲注——sql-lab第八关
  3. eventproxy
  4. 详解基于 Cortex-M3 的任务调度(下)
  5. 【linux家常菜】redhat 6.5 安装yum
  6. 分支合并 Fork-Join 框架
  7. Python超越Java语言,跃居世界编程语言第2位了!你却还在犹豫学不学Python?
  8. zcmu1862(模拟)
  9. 汇编语言TEXTEQU伪指令
  10. 盘点“逆市上涨”BZ第一季度回购亮点