zoukankan      html  css  js  c++  java
  • 数据结构实验之图论二:图的深度遍历(SDUT 2107)(简单DFS)

    题解:图的深度遍历就是顺着一个最初的结点开始,把与它相邻的结点都找到,也就是一直往下搜索直到尽头,然后在顺次找其他的结点。

    #include <bits/stdc++.h>
    using namespace std;
    
    int gra[200][200]; //储存图的大小
    int vis[200];   // 标记数组
    
    void dfs(int x,int k) // 有k个点,x代表目前搜到了那个点。
    {
        int i;
        for(i = 0; i < k; i ++)
        {
            if(!vis[i] && gra[x][i])  // 如果和x这个点相连并且没有找过就是符合条件的
            { 
                vis[i] = 1;
                printf (" %d",i);
                dfs(i,k);      // 找与这个点相连接的
            }
        }
    }
    
    int main()
    {
        int n, u, v, k, m, i;
        scanf("%d",&n);
        while(n--)
        {
            scanf("%d %d",&k, &m);
            memset(gra, 0, sizeof(gra));
            memset(vis, 0, sizeof(vis));
            for(i = 0; i < m; i ++)
            {
                scanf("%d%d",&u, &v);
                gra[u][v] = gra[v][u] = 1;
            }
            vis[0] = 1;
            printf("0");
            dfs(0,k);
            printf("
    ");
        }
        return 0;
    }
    

    er:

    #include <bits/stdc++.h>
    #include <iostream>
    using namespace std;
    int a[500][500];
    int vis[450];
    int f = 1;
    void dfs(int t,int n)
    {
        vis[t] = 1;
       if(f) f= 0;
       else printf(" %d",t);
       for(int i = 0; i < n; i ++)
       {
            if(!vis[i] && a[t][i])
            {
                vis[i] = 1;
                dfs(i,n);
            }
       }
    }
    int main()
    {
        int n,k,m,t,u,v;
        cin >> n;
        while(n --)
        {
            cin >> k >> m;
            memset(a,0,sizeof(a));
            while(m --)
            {
                cin >> u >> v;
                a[u][v] = a[v][u] = 1;
            }
            memset(vis,0,sizeof(vis));
            f = 1;
            printf("0");
            dfs(0,k);
            printf("
    ");
        }
        return 0;
    }
    
  • 相关阅读:
    bzoj1415 NOI2005聪聪和可可
    Tyvj1952 Easy
    poj2096 Collecting Bugs
    COGS 1489玩纸牌
    COGS1487 麻球繁衍
    cf 261B.Maxim and Restaurant
    cf 223B.Two Strings
    cf 609E.Minimum spanning tree for each edge
    cf 187B.AlgoRace
    cf 760B.Frodo and pillows
  • 原文地址:https://www.cnblogs.com/lcchy/p/10139441.html
Copyright © 2011-2022 走看看