博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ZOJ2760_How Many Shortest Path
阅读量:5072 次
发布时间:2019-06-12

本文共 2041 字,大约阅读时间需要 6 分钟。

给一个图,求从某个点到另一个点的最短路有多少条?所有的路都不共边。

首先从终点开始Spfa标记最短距离,然后建图。

建图的时候,如果满足两点之间的最短路只差为两点之间的边长,那么在网络流的模型中连接一条边。

最终也只需要跑最大流即可。

注意此题没有要求不能经过同一个点,所有不需要拆点,由于我们在网络流的模型中间加边的时候边容量为1,也就保证了每条边只遍历一边了。

注意,有可能两个不同点之间的距离也为0,真是深坑啊,无法直视。

 

 

召唤代码君:

 

 

 

#include 
#include
#include
#define maxn 111#define maxm 44444typedef long long ll;using namespace std;ll inf=~0U>>2;ll to[maxm],next[maxm],c[maxm],first[maxn],edge;ll d[maxn],tag[maxn],TAG=520;ll Q[maxm],bot,top;ll ans,n,s,t;ll dis[maxn][maxn],f[maxn];bool can[maxn];void _input(){ for (ll i=1; i<=n; i++) { f[i]=inf,first[i]=-1; for (ll j=1; j<=n; j++) scanf("%lld",&dis[i][j]); } scanf("%lld%lld",&s,&t); s++,t++; Q[bot=top=1]=t,f[t]=0; while (bot<=top) { ll cur=Q[bot++]; for (ll i=1; i<=n; i++) if (dis[i][cur]>=0 && f[cur]+dis[i][cur]
=0 && f[i]==f[j]+dis[i][j]) addedge(i,j);}bool bfs(){ Q[bot=top=1]=t,d[t]=0,tag[t]=++TAG,can[t]=false; while (bot<=top) { ll cur=Q[bot++]; for (ll i=first[cur]; i!=-1; i=next[i]) if (c[i^1]>0 && tag[to[i]]!=TAG) { tag[to[i]]=TAG,can[to[i]]=false; d[to[i]]=d[cur]+1,Q[++top]=to[i]; if (to[i]==s) return true; } } return false;}ll dfs(ll cur,ll num){ if (cur==t) return num; ll tmp=num,k; for (ll i=first[cur]; i!=-1; i=next[i]) if (c[i]>0 && tag[to[i]]==TAG && d[to[i]]==d[cur]-1 && !can[to[i]]) { k=dfs(to[i],min(num,c[i])); if (k) num-=k,c[i]-=k,c[i^1]+=k; if (num==0) break; } if (num) can[cur]=true; return tmp-num;}int main(){ inf*=inf; while (scanf("%lld",&n)!=EOF) { _input(); if (s==t) { puts("inf"); continue; } build_graph(); for (ans=0; bfs(); ) ans+=dfs(s,inf); printf("%lld\n",ans); } return 0;}

转载于:https://www.cnblogs.com/lochan/p/3854865.html

你可能感兴趣的文章
Android系统--输入系统(十一)Reader线程_简单处理
查看>>
监督学习模型分类 生成模型vs判别模型 概率模型vs非概率模型 参数模型vs非参数模型...
查看>>
Mobiscroll脚本破解,去除Trial和注册时间限制【转】
查看>>
实验五 Java网络编程及安全
查看>>
32位与64位 兼容编程
查看>>
[数据库]关于三个比较典型的数据库试题(1.找到员工表中工资最高的前三名;2.找到员工表中薪水大于本部门平均薪水的员工;3.统计每年入职的员工个数)...
查看>>
iOS-数据解析XML解析的多种平台介绍
查看>>
自考心得
查看>>
基于PaaS人事部门间平台多重身份的技术解决方案
查看>>
写的好帮手项目官员 - Evernote 5.4(Evernote的) 中国绿色版
查看>>
java多线程(同步和死锁,生产者和消费者问题)
查看>>
STL algorithmi算法s_sorted和is_sorted_until(28)
查看>>
445port入侵具体解释
查看>>
华为面试题算什么,这个背会了外企随便进
查看>>
解决mysql控制台查询数据乱码的问题,有图有真相
查看>>
Oracle建立表空间和用户
查看>>
八字案例董易奇
查看>>
二代CMS旅游网站程序V1使用手册(八):邮件发送系统配置管理
查看>>
Docker-基本使用
查看>>
ghost xp 安装IIS,并配置WCF
查看>>