码迷,mamicode.com
首页 > 其他好文 > 详细

poj 1776 Task Sequences(哈密顿路)

时间:2015-09-01 21:30:09      阅读:265      评论:0      收藏:0      [点我收藏+]

标签:

题意:给定一个邻接矩阵,即一幅有向图(有环),问最少的覆盖路径为几条,求出遍历顺序;

思路:竞赛图存在哈密顿路,一定能找到一条遍历所有点的路。

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int mm[1005][1005];
char ch[1005];
int nxt[50010];
int n,m;
int main()
{
    int i,j,k,head,temp;
    while(scanf("%d",&n)!=EOF){
        getchar();
        for(i=0;i<n;i++){
          gets(ch);temp=0;
          for(j=0;j<n;j++){
            mm[i][j]=ch[temp]-0;
            temp+=2;
          }
          nxt[i]=-1;
        }                   //读入
        head=0;
        for(i=1;i<n;i++){
          if(mm[i][head]){  //插入到首部
            nxt[i]=head;
            head=i;
            continue;
          }
          j=head;
          k=nxt[j];
          while(k!=-1){
            if(mm[j][i]&&mm[i][k]) break; //找到插入位置
            j=k;
            k=nxt[j];
          }
          nxt[i]=k;
          nxt[j]=i;     //插入
        }
        printf("1\n%d\n",n);
        for(i=0;i<n;i++){
          if(i==0){
            printf("%d",head+1);
          }
          else printf(" %d",head+1);
          head=nxt[head];
        }printf("\n");
    }
    return 0;
}

 

poj 1776 Task Sequences(哈密顿路)

标签:

原文地址:http://www.cnblogs.com/dominating/p/4776734.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!