这个题说实话我没看出来,我看的别人的博客

https://blog.csdn.net/u013761036/article/details/39377499

这个人讲的很清楚,可以直接去看他的

题目给的 3个要求:

1.X 12+X 13+...X 1n=1 
2.X 1n+X 2n+...X n-1n=1 
3.for each i (1<i<n), satisfies ∑X ki (1<=k<=n)=∑X ij (1<=j<=n).

简单来说就是创建n个点,X 12+X 13+...X 1n=1 代表我们的  1点  的出度是1,这里没有对 1点 的入度做限制,也就是说入度可以为0

             X 1n+X 2n+...X n-1n=1 代表  n点  的入读是n,同上,出度可以为0

            for each i (1<i<n), satisfies ∑X ki (1<=k<=n)=∑X ij (1<=j<=n).    代表 2 到 (n-1) 这些点的入度等于出度

仔细想一下最短路,不也是这样吗,中间的点入度等于出度,初始点 入度为 0,结束的点出度为0

把 c这个矩阵看成任意两点间的距离,把 x 矩阵看成从1到n 最短路所要经过的路径,

求个最短路就是结果

当然还有一个特殊情况,就是 1到1的最小环+n到n的最小环,这样做出来也是满足那三个条件的

另外题目讲了c[i]>=0,不用担心负环

#include <iostream>
#include <queue>
#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std;
int arr[][];
int n;
bool vis[];
int dis[];
int spfa(int s,int e,int k)
{
memset(dis,0x3f,sizeof(dis));
memset(vis,,sizeof(vis));
queue<int> q;
if(k == )
{
q.push(s);
vis[s] = true;
dis[s] = ;
}
else
{
for(int i = ; i <= n; ++i)
{
if(i == s) continue;
q.push(i);
vis[i] = true;
dis[i] = arr[s][i];
}
}
while(!q.empty())
{
int u = q.front();
q.pop();
vis[u] = false;
for(int i = ; i <= n; ++i)
{
if(i == u) continue;
if(dis[i]>dis[u] + arr[u][i])
{
dis[i] = dis[u] + arr[u][i];
if(vis[i] == false)
{
vis[i] = true;
q.push(i);
}
}
}
}
return dis[e];
}
int main()
{
while(scanf("%d",&n) != EOF)
{
for(int i = ; i <= n; ++i)
{
for(int j = ; j <= n; ++j)
{
scanf("%d",&arr[i][j]);
}
}
int s1 = spfa(,n,);
int s2 = spfa(,,);
int s3 = spfa(n,n,);
if(s1 > s2 + s3) s1 = s2 + s3;
printf("%d\n",s1);
}
}

hdu 4370的更多相关文章

  1. HDU 4370 0 or 1 (最短路+最小环)

    0 or 1 题目链接: Rhttp://acm.hust.edu.cn/vjudge/contest/122685#problem/R Description Given a n*n matrix ...

  2. HDU - 4370 0 or 1

    0 or 1 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  3. HDU - 4370 0 or 1 最短路

    HDU - 4370 参考:https://www.cnblogs.com/hollowstory/p/5670128.html 题意: 给定一个矩阵C, 构造一个A矩阵,满足条件: 1.X12+X1 ...

  4. HDU 4370 0 or 1(spfa+思维建图+计算最小环)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4370 题目大意:有一个n*n的矩阵Cij(1<=i,j<=n),要找到矩阵Xij(i< ...

  5. HDU 4370 0 or 1 (最短路)

    [题目链接](http://acm.hdu.edu.cn/showproblem.ph Problem Description Given a n/n matrix Cij (1<=i,j< ...

  6. 思维题(转换) HDU 4370 0 or 1

    题目传送门 题意:题目巨晦涩的传递出1点和n点的初度等于入度等于1, 其余点出度和入度相等 分析:求最小和可以转换成求最短路,这样符合条件,但是还有一种情况.1点形成一个环,n点也形成一个环,这样也是 ...

  7. kuangbin_ShortPath R (HDU 4370)

    出题人真是脑洞堪比黑洞 (然后自己也被吸进去了 理解一遍题意 三个条件可以转化为 1的出度是1, n的入度是1, 2~n-1的出度等于入度 不难发现1-n的最短路符合题意 然而其实还有另一种情况 1为 ...

  8. (中等) HDU 4370 0 or 1,建模+Dijkstra。

    Description Given a n*n matrix C ij (1<=i,j<=n),We want to find a n*n matrix X ij (1<=i,j&l ...

  9. HDU 4370 0 or 1 (01规划)【Dijkstra】||【spfa】

    <题目链接> 题目大意: 一个n*n的01矩阵,满足以下条件 1.X12+X13+...X1n=12.X1n+X2n+...Xn-1n=13.for each i (1<i<n ...

随机推荐

  1. echarts简单的折线图

    加jar包 <script src="<%=path %>/js/echarts.min.js"></script> 首先 在jsp页面中 选好 ...

  2. python测试开发django-1.开始hello world!

    前言 当你想走上测试开发之路,用python开发出一个web页面的时候,需要找一个支持python语言的web框架.django框架有丰富的文档和学习资料,也是非常成熟的web开发框架,想学pytho ...

  3. python环境搭建(linux)

    python安装 # wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz # yum install openssl-devel ...

  4. 20175126《Java程序设计》第六周学习总结

    # 20175126 2016-2017-2 <Java程序设计>第五周学习总结 ## 教材学习内容总结 - 本周学习方式主要为手动敲代码并理解内容学习. - 学习内容为教材第七章第十章, ...

  5. 从零开始学spring cloud(二) -------- 开始使用Spring Cloud实战微服务

    1.准备工作 2.服务提供者与服务消费者 3.服务发现与服务注册 服务发现: 服务注册表: 服务注册表是一个记录当前可用服务实例的网络信息的数据库,是服务发现机制的核心.服务注册表提供查询API和管理 ...

  6. 【C++】undered_map的用法总结(1)

    1.介绍 unordered_map是一个关联容器,内部采用的是hash表结构,拥有快速检索的功能. 1.1 特性 关联性:通过key去检索value,而不是通过绝对地址(和顺序容器不同)无序性:使用 ...

  7. Sublime Text 执行后只有运行时间,没有执行结果!解决方法!

    问题:build完python代码,只输出:[Finished in 0.2s] 分析:操作回忆:开始是可以看到运行结果的,后来在Tools>>Build with 选择了"Sy ...

  8. CentOS7 常用设置

    安装配置 0.Centos7 优盘U盘安装以及解决安装时引导错误 1.CentOS7开启网卡,设置开机启用网卡 2.CentOS7 修改静态IP地址 3.CentOS7 下使用root免密码输入自动登 ...

  9. Oracle 数据库中对记录进行分页处理

    学习到 oracle 的视图的时候,了解到对 Oracle 中数据的记录进行分页处理和 Mysql 提供的 limit 来进行分页处理大有不同,limit 是 mysql 中特有的关键字. 那么在 o ...

  10. linux ssh反向代理

    参考:https://segmentfault.com/a/1190000002718360 内外运行:sshpass -p 123456 ssh -fNR 5000:localhost:22 ser ...