Sicily 4433. DAG?

来源:互联网 发布:沈阳网络营销黑马网络 编辑:程序博客网 时间:2024/06/08 17:10

深搜一下,看存不存在反向边,然后就可以判断是不是DAG了。

Run Time: 0sec

Run Memory: 316KB

Code length: 900Bytes

SubmitTime: 2011-12-27 11:59:50

// Problem#: 4433// Submission#: 1136706// The source code is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License// URI: http://creativecommons.org/licenses/by-nc-sa/3.0/// All Copyright reserved by Informatic Lab of Sun Yat-sen University#include <cstdio>#include <cstring>using namespace std;int n, m, k;int u, v;bool DAG;bool edge[ 101 ][ 101 ];int visited[ 101 ];void DFS( int i ) {    for ( int j = 1; DAG && j <= n; j++ ) {        if ( edge[ i ][ j ] ) {            if ( visited[ j ] == 0 ) {                visited[ j ] = 1;                DFS( j );            }            else if ( visited[ j ] == 1 )                DAG = false;        }    }    visited[ i ] = 2;}int main(){    memset( edge, false, sizeof( edge ) );    memset( visited, 0, sizeof( visited ) );    scanf( "%d%d", &n, &m );    while ( m-- ) {        scanf( "%d%d", &u, &v );        edge[ u ][ v ] = true;    }    DAG = true;    for ( int i = 1; DAG && i <= n; i++ ) {        if ( visited[ i ] == 0 ) {            visited[ i ] = 1;            DFS( i );        }    }    printf( DAG ? "1\n": "0\n" );        return 0;}                                 


 

原创粉丝点击