题目:

http://poj.org/problem?id=1776

题意:

给出一个n*n的矩阵,若第i个任务做完之后可以做第j个任务,则矩阵的第i行第j列为1,否则为0。机器完成一项任务之后会自动转到下一个任务,否则机器会自动停止。

求出最少的启动次数,输出每次启动次数完成的任务个数和任务序列。

思路:

题目给出一个竞赛图(即任意两点之间有且仅有一条有向边的有向图),则竞赛图一定存在哈密顿路径。题目转化为求一条哈密顿路径。

#include <cstdio>
#include <string.h>
using namespace std; const int inf = 0x3ffffffff;
const int maxn = 1005;
int n, head, t, g[maxn][maxn], ans[maxn];
char s[maxn][maxn]; void Hamliton(){
memset(ans, -1, sizeof(ans));
head = 1;
for (int i = 2; i <= n; ++i) {
bool flag = 0;
for (int j = head; ~j; j = ans[j]) {
if (g[i][j]) {
if (j == head) head = i;
else ans[t] = i;
ans[i] = j;
flag = 1;
break;
}
else t = j;
}
if (!flag) ans[t] = i;
}
} int main()
{
scanf("%d\n", &n);
for (int i = 1; i <= n; i++) {
scanf("%s", s[i]);
}
for (int i = 1; i <= n; ++i) {
for (int j = 0; j < n; ++j) {
if (s[i][j] == '+')
g[i][j + 1] = 1;
}
}
Hamliton();
printf("YES\n");
for (int i = head; ~i; i = ans[i]) {
printf("%d", i-1);
printf(" ");
}
return 0;
}

POJ1776(哈密顿路径)的更多相关文章

  1. <路径算法>哈密顿路径变种问题(2016华为软件精英挑战赛初赛)

    原创博客,转载请联系博主! 前言:几天前华为的这个软件精英(算法外包)挑战赛初赛刚刚落幕,其实这次是我第二次参加,只不过去年只入围到了64强(32强是复赛线),最后搞到了一个华为的一顶帽子(感谢交大l ...

  2. 【Codeforces】【图论】【数量】【哈密顿路径】Fake bullions (CodeForces - 804F)

    题意 有n个黑帮(gang),每个黑帮有siz[i]个人,黑帮与黑帮之间有有向边,并形成了一个竞赛完全图(即去除方向后正好为一个无向完全图).在很多年前,有一些人参与了一次大型抢劫,参与抢劫的人都获得 ...

  3. 【CH0103】最短哈密顿路径

    题目大意:给定一个 N 个点的无向图,点有点权,求从 0 号点走到 N-1 号点的最短哈密顿路径是多少. 题解:由于哈密顿路径的定义是每个顶点必须经过且仅能经过一次,因此,可用当前是否经过了这些点和当 ...

  4. CDOJ 1960 构造哈密顿路径

    题意: 给定n个点的有向完全图,希望通过其中n-1条边将n个点串起来(2<=n<=1000) 欧拉路径:经过所有边且只经过一次 哈密顿路径:经过所有点且只经过一次 思路: 本题条件特殊,有 ...

  5. BZOJ.4727.[POI2017]Turysta(哈密顿路径/回路 竞赛图)

    题目链接 \(Description\) 给出一个n个点的有向图,任意两个点之间有且仅一条有向边.对于每个点v,求出从v出发的一条经过点数最多,且没有重复经过同一个点一次以上的简单路径. n<= ...

  6. BZOJ4727 [POI2017]Turysta 【竞赛图哈密顿路径/回路】

    题目链接 BZOJ4727 题解 前置芝士 1.竞赛图存在哈密顿路径 2.竞赛图存在哈密顿回路,当且仅当它是强联通的 所以我们将图缩点后,拓扑排序后一定是一条链,且之前的块内的点和之后块内的点的边一定 ...

  7. HDU 5424——Rikka with Graph II——————【哈密顿路径】

    Rikka with Graph II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Othe ...

  8. ural 1143. Electric Path(凸包上最短哈密顿路径)

    题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1143 题意:逆时针给一个凸包的n(n<=200)个顶点坐标,求一个最短哈密顿路径的 ...

  9. hdu 5424 Rikka with Graph II(dfs+哈密顿路径)

    Problem Description   As we know, Rikka is poor at math. Yuta is worrying about this situation, so h ...

随机推荐

  1. 网络设备 密码、用户级别 AAA授权 的管理

    一.进入 特权模式 密码 设置访问网络设备特权模式口令 cisco>enable cisco#config terminal cisco(config)#enable password 密码 e ...

  2. [Python]判断变量类型是否为List列表

    用法:isinstance(变量,list) li = [1,2,3] print(type(li)) if isinstance(li,list): print("This is a Li ...

  3. css实现表单label文字两端对齐

    如图,在我们写页面的时候,经常遇到这种的情况,而需求是想让label文字两端对齐,我们来看看如何用css解决 /**css代码**/ ul li{ list-style: none; } .info- ...

  4. F12后面的世界(Elements篇)——重识html

    从 淘宝网, 检查元素开始探索之旅. html是什么? hyper text markup language 超文本标记语言,使用标签来描述网页 标签 语义化标签 html5新增标签 什么是超文本? ...

  5. 秘钥分割-Shamir秘钥分割门限方案

    精选: 1.问题的提出 2.需求的抽象: 有一个秘钥S,转换成另一种数据数据形式,分配给12个人(s1,s2,.......,s12),使得任意3个人的数据拼凑在一起就可以反向计算出秘钥S. 3.解决 ...

  6. centos7安装Elasticsearch及Es-head插件详细教程(图文)

    懒惰了很久,今天来写一下Elasticsearch在centos7上安装教程以及安装过程中可能出现的报错解决方式,有不对的地方,烦请各位看官多多指教! 一.ES安装 1.环境检查 确保有java环境, ...

  7. 初识matlab

    1 matlab概貌 MATLAB是MATrix LABoratory(矩阵实验室)的缩写,是一款由美国The MathWorks公司出品的商业数学软件.matlab是一种用于算法开发.数据可视化.数 ...

  8. redis 5.0.7 源码阅读——压缩列表ziplist

    redis中压缩列表ziplist相关的文件为:ziplist.h与ziplist.c 压缩列表是redis专门开发出来为了节约内存的内存编码数据结构.源码中关于压缩列表介绍的注释也写得比较详细. 一 ...

  9. 正规表达式与有限自动机和LEX

    正规式与有限自动机的等价性 一个正规式r与一个有限自动机M等价, L(r)=L(M) FA ->正规式,对任何FA M,都存在一个正规式r,使得L(r)=L(M). 正规式 -> FA, ...

  10. MFC/QT 学习笔记(四)——MFC基于对话框学习控件(上)

    新建项目->MFC模板->MFC应用程序->应用程序类型:基于对话框->...OK 解决方案资源管理器->资源文件->xxx.rc->进入:资源视图-> ...