随笔 - 19, 文章 - 0, 评论 - 2, 引用 - 0
数据加载中……

hdu1181变形课

        典型的Floyd传递闭包,只要知道了算法,做起来和简单。
#include <stdio.h>
#include 
<string.h>
#include 
<memory.h>
#define DEBUG 1
const int N=28 ;
int map[N][N] ;

void Floyd( )
{
    
int i, j, k ;
    
for( k=0; k<26++k )
    
for( i=0; i<26++i )
    
for( j=0; j<26++j )
        map[i][j] 
= map[i][j] || ( map[i][k] && map[k][j] ) ;
}


int main()
{
    
#if DEBUG
     freopen(
"C:\\Documents and Settings\\Administrator\\桌面\\in.txt","r",stdin);
     freopen(
"C:\\Documents and Settings\\Administrator\\桌面\\out.txt","w",stdout);
     
#endif
     
int len ;
     
char a[2000] ;
     
while( EOF != scanf("%s",a) ){
        
if( a[0== '0' ){
            Floyd( ) ;
            
if( map[1][12] )
                printf(
"Yes.\n") ;
            
else
                printf(
"No.\n") ;
            memset( map, 
0sizeof(map) ) ;
            
continue ;
        }

        len 
= strlen( a ) ;
        map[a[
0]-'a'][a[len-1]-'a'= 1 ;
    }

    
return 0 ;
}

posted on 2009-05-10 19:48 祝你好运! 阅读(729) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理