• poj 3895(求无向图的最大简单环)


    题目链接:http://poj.org/problem?id=3895

    思想很简单,就是dfs,并且用一个数组记录到该节点所走过的长度,然后如果遇到已经走过的,就说明存在环了, 更新一下ans。

     1 /*************************************************************************
     2     > File Name: poj3895.cpp
     3     > Author: syhjh
     4     > Created Time: 2014年03月02日 星期日 21时06分39秒
     5  ************************************************************************/
     6 #include <iostream>
     7 #include <cstdio>
     8 #include <cstring>
     9 #include <algorithm>
    10 using namespace std;
    11 
    12 const int MAXN = (5000 + 50);
    13 struct Edge {
    14     int v, next;
    15 } edge[MAXN << 1];
    16 
    17 int n, m, NE, ans;
    18 int head[MAXN];
    19 
    20 void Insert(int u, int v) 
    21 {
    22     edge[NE].v = v;
    23     edge[NE].next = head[u];
    24     head[u] = NE++;
    25 }
    26 
    27 bool mark[MAXN];
    28 int dp[MAXN];
    29 
    30 void dfs(int u, int len)
    31 {
    32     mark[u] = true;
    33     dp[u] = len;
    34     for (int i = head[u]; i != -1; i = edge[i].next) {
    35         int v = edge[i].v;
    36         if (!mark[v]) {
    37             dfs(v, len + 1);
    38         } else {
    39             ans = max(ans, dp[u] - dp[v] + 1);
    40         }
    41     }
    42 }
    43 
    44 int main()
    45 {
    46     int _case;
    47     cin >> _case;
    48     while (_case--) {
    49         cin >> n >> m;
    50         NE = 0;
    51         memset(head, -1, sizeof(head));
    52         while (m--) {
    53             int u, v;
    54             cin >> u >> v;
    55             Insert(u, v);
    56             Insert(v, u);
    57         }
    58         ans = 0;
    59         memset(mark, false, sizeof(mark));
    60         for (int i = 1; i <= n; i++) {
    61             if (!mark[i]) {
    62                 dfs(i, 1);
    63             }
    64         }
    65         if (ans <= 2) {
    66             cout << 0 << endl;
    67         } else
    68              cout << ans << endl;
    69     }
    70     return 0;
    71 }
    View Code
  • 相关阅读:
    mysq foreign外键记录
    查询时隐藏部分身份证号
    SpringBoot接收前端参数
    RabbbitMQ安装
    @configurationProperties注解时 idea弹出 Spring Boot Annotion processor not found in classpath
    rpm,yum和apt使用详解
    python人脸识别
    Fuchsia文章汇总
    Androi O Automotive 介绍
    Linux 版本控制工具之rabbitvcs
  • 原文地址:https://www.cnblogs.com/wally/p/3577300.html
Copyright © 2020-2023  润新知