列出连通集(25 分)(深搜广搜)

来源:互联网 发布:怎么申请阿里云学生机 编辑:程序博客网 时间:2024/06/05 05:57

7-7 列出连通集(25 分)

给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N1编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。

输入格式:

输入第1行给出2个整数N(0<N10)和E,分别是图的顶点数和边数。随后E行,每行给出一条边的两个端点。每行中的数字之间用1空格分隔。

输出格式:

按照"{ v1v2 ... vk }"的格式,每行输出一个连通集。先输出DFS的结果,再输出BFS的结果。

输入样例:

8 60 70 12 04 12 43 5

输出样例:

{ 0 1 4 2 7 }{ 3 5 }{ 6 }{ 0 1 2 7 4 }{ 3 5 }{ 6 }这道题对于广搜部分就是一个简单的模板套用,没有什么不同,主要是深搜的标记普通的着路径的深搜是不同的,这里相当于遍历,每次每个点只能输出一次,但是一般的深搜肯定会经过重复的点,所以这里标记后回溯的时候不再让它变成0,然后打印这个点,这样下次就不会走到这个点了
#include <iostream>#include <cstdio>#include <cstring>#include <queue>using namespace std;#define INF 0x3f3f3f3fint n,e;int mp[15][15];int vis[15];int haveprint[15];void bfs(int s){    queue<int>q;    int i;    vis[s] = 1;    q.push(s);    while(!q.empty()){       int x = q.front();       printf("%d ",x);       q.pop();       for(i = 0; i < n; i++){          if(mp[x][i]==1&&!vis[i]){            vis[i] = 1;            q.push(i);          }       }    }}void dfs(int s){    int i;    printf("%d ",s);    for(i = 0; i < n; i++){        if(mp[s][i]==1&&!vis[i]){            vis[i] = 1;//标记            dfs(i);//不再变成零        }    }}int main(){    memset(mp,INF,sizeof(mp));    scanf("%d%d",&n,&e);    int i;    for(i = 0; i < e; i++){        int u,v;        scanf("%d%d",&u,&v);        mp[u][v] = 1;        mp[v][u] = 1;    }    int j;    //dfs    memset(vis,0,sizeof(vis));    //memset(haveprint,0,sizeof(haveprint));    for(i = 0; i < n; i++){        if(!vis[i]){            vis[i] = 1;            printf("{ ");            dfs(i);            printf("}\n");        }    }    //printf("---------------------------------------------\n");    //bfs    memset(vis,0,sizeof(vis));    for(i = 0; i < n; i++){        if(!vis[i]){            printf("{ ");            bfs(i);            printf("}\n");        }    }    return 0;}


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 刚毕业想换工作怎么办 客厅灯变不了光怎么办 塑料镀铝浸底漆咬底怎么办 标志408钥匙掉了怎么办 房本测绘页丢了怎么办 房本测绘页信息有误怎么办 税务登记证办完没有年检怎么办 建筑施工升降机司机证怎么办 北京建筑施工证怎么办呢 模拟城市5水抽干了怎么办 ip地址错误网络无法接通怎么办 rhino模型太大打开半天怎么办 日本新干线车票丢了怎么办 房间太干燥怎么办又热 薄荷叶子全干了怎么办 水培栀子花叶子蔫了怎么办 薄荷叶叶边干了怎么办 碗莲叶子发黑腐烂怎么办 龟背叶叶子蔫了怎么办 夏天龟背竹蔫了怎么办 春羽叶子长黄斑怎么办 百合竹叶子发黄掉落怎么办 凤尾蕨叶子蔫了怎么办 绿地珊瑚蕨干了怎么办 翠云草叶子蔫了怎么办 珊瑚蕨叶子烂了怎么办 黑骨茶叶子黑斑怎么办 外场主持没有人互动怎么办 企业年报填错了怎么办 手机忘了放哪了怎么办 燃气卡车没气了怎么办 老房子拆了重建怎么办 加了差的汽油怎么办 事业单位未满5年怎么办 小学孩子不会制订学习计划怎么办 忘记提交原创怎么办百度熊掌号 计算机一级报名表填错了怎么办 离婚了不给孩子生活费怎么办 点击爱奇艺系统提示停止运行怎么办 电视机图像颜色变了怎么办 10万签约被拒怎么办