zoukankan      html  css  js  c++  java
  • 简单的bfs

    这里主要是写的一个简单的bfs,实例运行了RMAT10无向图,总共有1024个顶点。这种简单的bfs算法存在很明显的缺陷,那就是如果图数据过大,那么进程将会直接被系统杀死。

    代码如下:

    #include <stdio.h>
    #include <iostream>
    #include <map>
    #include <vector>
    #include <sys/types.h>
    #include <unistd.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    using namespace std;
    #define MAX_NODES 1024
    float edges[MAX_NODES][MAX_NODES];
    bool IsVisited[MAX_NODES];
    int main(){
    	for(int i=0;i<MAX_NODES;i++){
    		for(int j=0;j<MAX_NODES;j++)
    			edges[i][j]=-1;//-1 represents no link
    		IsVisited[i]=false;
    	}
    	int fd1;
    	fd1=open("../zhangyangData/RMAT10_undirect",O_RDONLY,0);
    	if(fd1==-1){
    		cout<<"error "<<endl;
    		return 0;
    	}
    	int s,t;
    	float f;
    	while(read(fd1,&s,4)>0&&n>0){
    		read(fd1,&t,4);
    		read(fd1,&f,4);
    		//cout<<s<<" "<<t<<":"<<f<<endl;
    		edges[s][t]=1;
    	}
    	int flag=0,count=0;
    	for(int i=0;i<MAX_NODES;i++){
    		for(int j=0;j<MAX_NODES;j++){
    			if(edges[i][j]==1) flag=1;
    			//cout<<edges[i][j]<<" ";
    		}
    		if(flag) count++;
    		//cout<<endl;
    	}
    	cout<<count<<endl;
    	vector<int> ves;
    	ves.push_back(1023);
    	while(!ves.empty()){
    		int next_node=*ves.begin();
    		cout<<next_node<<" ";
    		IsVisited[next_node]=true;
    		cout<<IsVisited[next_node]<<endl;
    		ves.erase(ves.begin());
    		for(int i=0;i<MAX_NODES;i++){
    			if(edges[next_node][i]>0&&IsVisited[i]==false){																					ves.push_back(i);
    			       IsVisited[i]=true;
    			}
    		}
    		if(ves.empty()){
    			for(int i=0;i<MAX_NODES;i++){
    				if(IsVisited[i]==false)
    					ves.push_back(i);
    			}
    		}
    	}
    	return 0;
    }
    
  • 相关阅读:
    Levenshtein距离
    最长上升子序列
    python常用内置方法
    【转载】一个有趣的python排序模块:bisect
    python常用内置函数
    线性相位FIR系统的单位脉冲响应
    模拟信号与数字信号的傅里叶变换的关系
    从傅里叶级数到傅里叶变换
    完善实体类,由EF自动生成数据库过程中的一些问题
    成为NB程序员的“关键”
  • 原文地址:https://www.cnblogs.com/JsonZhangAA/p/8920143.html
Copyright © 2011-2022 走看看