zoukankan      html  css  js  c++  java
  • 【ZJOI2004】嗅探器

    一道鬼畜的题目,洛谷给的标签是紫题,怎么可能是紫题……

    原本我想找出在起点到终点的路径上的割点,但是看到了这良心的数据之后……

    由于数据很小,所以我们枚举中间点,然后进行一遍dfs,判断不经过这个中间点这张图是否联通即可。

    这就能过??

    是的……时间复杂度为O(n2)

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <algorithm>
     5 using namespace std;
     6 int n;
     7 struct node {
     8     int next,to;
     9 }a[100010];
    10 int num,head[100010];
    11 bool vis[1010];
    12 int x,y;
    13 inline void add(int from,int to) {
    14     a[++num].next=head[from];
    15     a[num].to=to;
    16     head[from]=num;
    17 }
    18 bool dfs(int u,int pd) {
    19     for(int i=head[u];i;i=a[i].next) {
    20         int v=a[i].to;
    21         if(vis[v]) continue ;
    22         if(v==pd) continue ;
    23         if(v==x) continue ;
    24         if(v==y) return 1;
    25         vis[v]=1;
    26         if(dfs(v,pd)) return 1;
    27     }
    28     return 0;
    29 }
    30 int main() {
    31     scanf("%d",&n);
    32     while(scanf("%d%d",&x,&y)==2&&x&&y) {
    33         add(x,y);
    34         add(y,x);
    35     }
    36     scanf("%d%d",&x,&y);
    37     for(int i=1;i<=n;i++) {
    38         if(i==x||i==y) continue ;
    39         memset(vis,0,sizeof(vis));
    40         if(!dfs(x,i)) {
    41             printf("%d
    ",i);
    42             return 0;
    43         }
    44     }
    45     puts("No solution");
    46     return 0;
    47 }
    AC Code
  • 相关阅读:
    Python for i 循环
    Python 输入分数并评
    用户名和密码的输入
    cocos2d-x 3.0学习
    VS2008 ShotKey
    Cocos2d-x 3.0的安装方法
    VFC
    一、在WIN7 64位系统平台,VS2013环境下安装WTL90_4090_RC1(2014-04-01)
    http://www.vcf-online.org/
    Win7 64位 VS2012 安装 Qt5
  • 原文地址:https://www.cnblogs.com/shl-blog/p/10807695.html
Copyright © 2011-2022 走看看