R - 0 or 1 HDU - 4370

题意: 给你一个邻接矩阵,让你求出从满足条件的答案, 条件如下:

  1. 1 的出度为 1, 入度不一定
  2. n 的入度为 1, 出度不一定
  3. 其余点的 出度 == 入度,即 当
    1) in = out = 0 时, ans = dis[n]
    2) in = out >= 1, 总能从1出发,沿原路或其他路返回1,即有一条欧拉回路,同理有从 n 出发的一个环, ans = min_circle_dis[1] + min_circle_dis[n];
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
const int maxn = 310;
const int inf = 0x3f3f3f3f;
int n;
int a[maxn][maxn];
int dis[maxn];
bool vis[maxn];void spfa(int s) {memset(vis, 0, sizeof(vis));queue<int> Q;for(int i = 1; i <= n; i++) {dis[i] = a[s][i];if(i != s) {Q.push(i); vis[i] = 1;}}dis[s] = inf; // 注意, 从 1 -> 1 的环de距离 != a[1][1],应该重新更新为环的长度,如果没有环也没关系,因为前一步已经把 s -> 各个点的距离都更新好了 while(Q.size()) {int u = Q.front(); Q.pop(); vis[u] = 0;for(int i = 1; i <= n; i++) {if(u == i) continue;if(dis[i] > dis[u] + a[u][i]) {dis[i] = dis[u] + a[u][i];if(vis[i]) continue;Q.push(i); vis[i] = 1;}}}
}int main() {//  freopen("test.in", "r", stdin);while(~scanf("%d", &n)) {for(int i = 1; i <= n; i++)for(int j = 1; j <= n; j++)scanf("%d", &a[i][j]);spfa(1);int dist1 = dis[1];int distn = dis[n];spfa(n);int ans = min(dist1 + dis[n], distn);printf("%d\n", ans);}return 0;
}

R - 0 or 1 HDU - 4370相关推荐

  1. HDU - 4370 0 or 1(思维+最短路)

    题目链接:点击查看 题目大意:给定一个n*n的矩阵,需要构造出一个n*n的矩阵,规定矩阵只能由0或1组成,使得最小. 题目解析:题意很明确,但是却很抽象,我们需要从图论的角度来看待三个初始条件: 假设 ...

  2. Codeforces 1548B Integers Have Friends 尺取法 Hdu 7073 Integers Have Friends 2.0 力能扛鼎随机算法

    文章目录 题意 题解 CF1548B 题解 Hdu 7073 CF1548B HDU7073 题意 定义数的好友组为一个集合SSS,取正整数m>1,∀x∈s,xmodmm>1,\foral ...

  3. bk=1160,求k值,bn是一个集合{2^t+2^s+2^r}且t>s>r>=0程序验证

    bk=1160,求k值,bn是一个集合{2^t+2^s+2^r}且t>s>r>=0程序验证 程序验证结果为a145(10.0,7.0,3.0)=1160.0 k=145 程序验证: ...

  4. 5、假设奖金税率如下(ma代表税前奖金且ma>0,r代表税率),利用switch语句编写程序对输入的一个奖金数,输出税率和应交税款及实得奖金数(扣除奖金税后)。① 0 ≤ma<1000时,

    5.假设奖金税率如下(ma代表税前奖金且ma>0,r代表税率),利用switch语句编写程序对输入的一个奖金数,输出税率和应交税款及实得奖金数(扣除奖金税后). ① 0 ≤ma<1000时 ...

  5. 输入一个圆半径r,当r>=0时,计算并输出圆面积跟周长,否则,输出提示信息。

    #include <stdio.h> #define PI 3.14 int main(void) { double r,area,girth; printf("please i ...

  6. 【力扣】08 剧情触发时间:在战略游戏中,玩家往往需要发展自己的势力来触发各种新的剧情。一个势力的主要属性有三种,分别是文明等级(C),资源储备(R)以及人口数量(H)。在游戏开始时(第 0 天),三

    LCP 08. 剧情触发时间 在战略游戏中,玩家往往需要发展自己的势力来触发各种新的剧情.一个势力的主要属性有三种,分别是文明等级(C),资源储备(R)以及人口数量(H).在游戏开始时(第 0 天), ...

  7. HDU 4389 - X mod f(x)

    题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=4389 2012多校,第9场,1010 . 问题是,询问区间内 存在多少个 哈沙德数(Harshad ...

  8. HDU 3507:Print Article

    HDU 3507:Print Article 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3507 题目大意:给定$n$,$m$,输出序列$n$个数, ...

  9. HDU 4609 3-idiots FFT

    3-idiots 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=4609 Description King OMeGa catched three m ...

最新文章

  1. 分享我们用Leangoo看板工具做的采购看板,超级好用
  2. windows下nginx的简单使用
  3. Oracle alter table详解
  4. 如果从Silverlight 读取本地GB2312格式的xml文件
  5. java 99乘法表对齐_Java实现九九乘法表的完整实例(对齐版)
  6. 从Python中readline()函数读取的一行内容中去掉换行符\n
  7. Java设计模式-Proxy代理模式
  8. H2内嵌数据库的使用
  9. 0 win10重装partition_修复Win10系统无法安装系统保留分区方法
  10. Django输入日期返回第几天time
  11. 析构函数virtual与非virtual区别
  12. javaweb实训第五天下午——SpringMVC基础
  13. smart-framework框架学习之DispatcherServlet分发机制
  14. 相机模型与标定(三)--张正友标定
  15. _stdcall函数调用约定详解
  16. 为工大瑞普新编写的CCNA实验手册提供下载
  17. 炫酷报表制作工具推荐:RDP报表工具
  18. ANSYS命令流——圆柱体网格划分
  19. Adobe官方清理工具Adobe Creative Cloud Cleaner Tool使用教程
  20. apex乱码_[请教]apex安装简体中文语言包的步骤

热门文章

  1. OpenCV DNN支持的对象检测模型
  2. 基于OpenCV的图像强度操作
  3. 阿里程序员工作小技巧:理解CPU分支预测,提高代码效率
  4. Linux编程_Shell脚本练习题
  5. sftp连不上服务器 vscode_VSCODE 【SFTP】 Code:3221225477 / 扩展宿主意外终止 解决方法...
  6. oracle数据库12528,解决(Oracle)ORA-12528: TNS: 监听程序: 所有适用例程都无法建立新连接 问题...
  7. 无法安装到这个磁盘 这台计算机,安装Win7提示无法安装到这个磁盘怎么办
  8. 如何用Python实现多任务版的udp聊天器
  9. 为什么电气自动化学历不高只能进厂?
  10. STM32为何能在众多单片机中脱颖而出?