| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 320 人关注过本帖
标题:图的广度搜索,很简单,在VC++中运行正确,在acm网上测评上怎么会有这样的错 ...
只看楼主 加入收藏
境善
Rank: 2
等 级:论坛游民
帖 子:76
专家分:16
注 册:2012-10-29
结帖率:86.21%
收藏
已结贴  问题点数:2 回复次数:2 
图的广度搜索,很简单,在VC++中运行正确,在acm网上测评上怎么会有这样的错误呢
#include <stdio.h>

#define MAXSIZE 100
int visited[MAXSIZE]={0};//标记是否被访问过,0表示没有,1表示访问过

//队列的数据结构
typedef struct
{
int data[MAXSIZE];
int front;
int rear;
}squeue;

//图的数据结构
typedef struct
{
int no;//顶点编号
}vertexType;

typedef struct
{
int num,edg;//顶点数和边数

int edges[MAXSIZE][MAXSIZE];//存放边之间的值

vertexType  vex[MAXSIZE];//存放顶点
}MGraph;//定义图


//入队
void enQueue(squeue &qu,int x)
{
   qu.rear=(qu.rear+1)%MAXSIZE;
   qu.data[qu.rear+1]=x;
}

//出队
int  deQueue(squeue &qu)
{
if(qu.front==qu.rear)  return 0;
else {
  int x;
  qu.front=(qu.front+1)%MAXSIZE;
  x=qu.data[qu.front];   
  return x;
    }
}


/*

定义bfs函数:
广度优先搜索遍历类似于树的按层次遍历的过程。其过程为:假设从图中的某顶点v出发,
在访问了v之后依次访问v的各个未曾被访问过的邻接点,然后分别从这些邻接点出发依次访问它们的邻接点,
并使“先被访问的顶点的邻接点”先于“后被访问的顶点的邻接点”被访问,直至图中所有已被访问的顶点的邻接点都被访问到。
若此时图中尚有顶点未被访问,则另选图中一个未曾被访问的顶点作为起始点。重复上述过程,直至图中所有顶点都被访问到为止。

*/

void bfs(MGraph G,int no,int n,int visited[])
{
   squeue que;
   que.front=0;
   que.rear=0;
   enQueue(que,no);
   printf("%d ",no);//访问顶点,进行输出
   visited[no]=1;//将其值置1

   while(que.front!=que.rear){
       deQueue(que);
    int k=0;
   for(k=0;k<n;k++)
        {
       if(G.edges[no][k]&&!visited[k]){
            enQueue(que,k);  
            printf("%d ",k);//访问顶点,进行输出
            visited[k]=1;//将其值置1
                }
        }   
   }

}


int main()
{
//读入数据
int n,i=0,j=0;
MGraph  G;

scanf("%d",&n);
for(i=0;i<n;i++)
 for(j=0;j<n;j++)
    {
    scanf("%d",&G.edges[i][j]);
    }

for(i=0;i<n;i++)
    {
     if(!visited[i])
         bfs(G,i,n,visited);
     }
return 0;
}
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: include 网上 
2014-03-15 14:42
天使梦魔
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:37
帖 子:564
专家分:2754
注 册:2007-8-29
收藏
得分:1 
什么图广度搜索,注解上有顶点,这是绘制3d的?
错误提示很明显了,每个编译器都不一样,按提示自己改别,没有的部分说明你缺少文件或者相关sdk
2014-03-18 16:20
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:1 
void enQueue(squeue &qu,int x)
这真的是C语言?
2014-03-18 16:31
快速回复:图的广度搜索,很简单,在VC++中运行正确,在acm网上测评上怎么会有这 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016491 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved