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

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. freeswitch 使用info显示的通道变量

    2019-01-20 11:57:30.167311 [INFO] mod_dptools.c:1743 CHANNEL_DATA:Channel-State: [CS_EXECUTE]Channel ...

  2. strin 数组转换成int 数组

    string[] strarry = ids.Trim(',').Split(','); int[] arryInts = Array.ConvertAll<string, int>(st ...

  3. ABAP开发规范

    一.数据库操作 1.禁止修改系统标准表. 2.如果使用到FOR ALL ENTRIES IN语句取数,一定要校验关联内表非空性. 3.禁止一条SELECT关联的表超过5张,需要多表取值的时候建议分开取 ...

  4. http/2.0与http/1.1的区别

    http/2是http协议自1999年http1.1发布后的首个更新  主要基于SPDY协议 2.0  采用二进制 而不是文本格式 完全多路复用 而不是有序并阻塞的   只需要一个连接即可实现并行 使 ...

  5. MySQL数据库开发常见问题及几点优化!

    从一下三个方面考虑: 库表设计 慢 SQL 问题 误操作.程序 bug 时怎么办 一.库表设计 1.1.引擎选择 在 MySQL5.1 中,引入了新的插件式存储引擎体系结构,允许将存储引擎加载到正在运 ...

  6. IEnumerable对象的Distinct方法重写

    public static IEnumerable<TSource> DistinctBy<TSource, TKey>(this IEnumerable<TSource ...

  7. 【aardio】是否取消三个按键的对话框

    import win; var id = win.msgbox("三个按钮","标题",0x3/*_MB_YESNOCANCEL*/) 参考标准库函数: nam ...

  8. 一键脚本清理DEBIAN系统无用组件 减少系统资源

    虽然如今我们选择服务器资源都比较多,以前我们看到很多128MB内存.甚至32MB内存的建站网站,感觉特别羡慕.其实这些也不是难事,相比之下,DEBIAN系统比CENTOS系统占用资源少,然后我们需要进 ...

  9. 泡泡堂BNB[ZJOI2008]

    --BZOJ1034 Description 第XXXX届NOI期间,为了加强各省选手之间的交流,组委会决定组织一场省际电子竞技大赛,每一个省的代表队由n名选手组成,比赛的项目是老少咸宜的网络游戏泡泡 ...

  10. 部落划分Group[JSOI2010]

    --BZOJ1821 Description 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落之间则经常发生 ...