zoukankan      html  css  js  c++  java
  • POJ2258

    题意:

    给定一些点,一些边。

    找出最长的一条路。

    点可重复走。

    简单的dfs

    View Code
     1 #include<stdio.h>
     2 #include<string.h>
     3 const int maxn = 105;
     4 int mat[ maxn ][ maxn ],vis[ maxn ][ maxn ];
     5 int max( int i,int j ){
     6     if( i<j ) i=j;
     7     return i;
     8 }
     9 int ans;
    10 
    11 void dfs( int pos,int sum,int n ){
    12     if( pos>=n ) return ;
    13     ans=max( ans,sum );
    14     for( int i=0;i<n;i++ ){
    15         if( i==pos ) continue;
    16         if( vis[ pos ][ i ]==0 ) continue;
    17         vis[ pos ][ i ]=vis[ i ][ pos ]=0;
    18         dfs( i,sum+1,n );
    19         vis[ pos ][ i ]=vis[ i ][ pos ]=1;
    20     }
    21 }
    22 
    23 
    24 
    25 
    26 int main(){
    27     int n,m;
    28     while( scanf("%d%d",&n,&m)==2 ,n+m ){
    29         memset( mat,0,sizeof( mat ) );
    30         while( m-- ){
    31             int a,b;
    32             scanf("%d%d",&a,&b);
    33             mat[ a ][ b ]=mat[ b ][ a ]=1;
    34             //vis[ a ][ b ]=vis[ b ][ a ]=1;
    35         }
    36         ans=0;
    37         for( int i=0;i<n;i++ ){
    38             for( int j=0;j<n;j++ )
    39                 for( int k=0;k<n;k++ )
    40                     vis[ j ][ k ]=mat[ j ][ k ];
    41             dfs( i,0,n );
    42         }
    43         printf("%d\n",ans);
    44     }
    45     return 0;
    46 }
    keep moving...
  • 相关阅读:
    自闭的D7
    D2
    Codeforces Round #531 (Div. 3)
    hello 2019 D
    牛客练习赛36B
    cf954H
    gym102007 E
    Gym 101972
    Gym 101810
    试题 历届试题 青蛙跳杯子(bfs)
  • 原文地址:https://www.cnblogs.com/xxx0624/p/2838292.html
Copyright © 2011-2022 走看看