zoukankan      html  css  js  c++  java
  • 蓝桥---网络寻路(DFS)

    Description

    X 国的一个网络使用若干条线路连接若干个节点。节点间的通信是双向的。某重要数据包,为了安全起见,必须恰好被转发两次到达目的地。该包可能在任意一个节点产生,我们需要知道该网络中一共有多少种不同的转发路径。
    源地址和目标地址可以相同,但中间节点必须不同。

    如下图所示的网络。
    1 -> 2 -> 3 -> 1 是允许的
    1 -> 2 -> 1 -> 2 或者 1 -> 2 -> 3 -> 2 都是非法的。
     

    Input

    输入数据的第一行为两个整数N M,分别表示节点个数和连接线路的条数(1<=N<=10000; 0<=M<=100000)。
    接下去有M行,每行为两个整数 u 和 v,表示节点u 和 v 联通(1<=u,v<=N , u!=v)。
    输入数据保证任意两点最多只有一条边连接,并且没有自己连自己的边,即不存在重边和自环。

    Output

    输出一个整数,表示满足要求的路径条数。

    Sample Input

    3 3
    1 2
    2 3
    1 3

    Sample Output

    6

    样例输入2

    4 4
    1 2
    2 3
    3 1
    1 4

    样例输出2

    10
     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <iostream>
     4 #include <string>
     5 #include <math.h>
     6 #include <algorithm>
     7 #include <vector>
     8 #include <stack>
     9 #include <queue>
    10 #include <set>
    11 #include <map>
    12 #include <sstream>
    13 const int INF=0x3f3f3f3f;
    14 typedef long long LL;
    15 const double eps =1e-8;
    16 const int mod=1e9+7;
    17 const int maxn=1e6+10;
    18 using namespace std;
    19  
    20 vector<int> vt[10005];
    21 LL ans;
    22  
    23 void DFS(int u,int step,int fa)
    24 {
    25     if(step==3)
    26     {
    27         ans++;
    28         return;
    29     }
    30     for(int i=0;i<vt[u].size();i++)
    31     {
    32         int v=vt[u][i];
    33         if(v!=fa) DFS(v,step+1,u); 
    34     }
    35     return ;
    36 }
    37  
    38 int main()
    39 {
    40     #ifdef DEBUG
    41     freopen("sample.txt","r",stdin);
    42     #endif
    43      
    44     int n,m;
    45     scanf("%d %d",&n,&m);
    46     for(int i=1;i<=m;i++)
    47     {
    48         int u,v;
    49         scanf("%d %d",&u,&v);
    50         vt[u].push_back(v);
    51         vt[v].push_back(u);
    52     }
    53     for(int i=1;i<=n;i++)
    54         DFS(i,0,0);
    55     printf("%lld
    ",ans);
    56      
    57     return 0;
    58 }

    -

  • 相关阅读:
    Android导包导致java.lang.NoClassDefFoundError
    canvas
    [java]OutOfMemoryError 原因及解决办法
    [转]加速Android Studio/Gradle构建
    本地Tomcat配置ssl 实现https访问
    机器学习中的无监督学习
    SQL 创建数据库、表以及索引
    海马玩模拟器共享文件夹导入导出图文教程
    Java-SDK-图像识别实现身份证照片获取信息
    Java中的平方
  • 原文地址:https://www.cnblogs.com/jiamian/p/12319071.html
Copyright © 2011-2022 走看看