资源简介
输入节点数和边数自动生成无向图并计算桥的数量,一个cpp文件
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
using namespace std;
class lineSet{
public:
//int
int pointNum;
int lineNum;
int set[20000][2];
lineSet(){
lineNum=0;
pointNum=0;
for(int i=0;i<20000;i++){
for(int j=0;j<2;j++){
set[i][j]=-1;
}
}
}
};
vector split(const string &s const string &seperator){
vector result;
typedef string::size_type string_size;
string_size i = 0;
while(i != s.size()){
//找到字符串中首个不等于分隔符的字母;
int flag = 0;
while(i != s.size() && flag == 0){
flag = 1;
for(string_size x = 0; x < seperator.size(); ++x)
if(s[i] == seperator[x]){
++i;
flag = 0;
break;
}
}
//找到又一个分隔符,将两个分隔符之间的字符串取出;
flag = 0;
string_size j = i;
while(j != s.size() && flag == 0){
for(string_size x = 0; x < seperator.size(); ++x)
if(s[j] == seperator[x]){
flag = 1;
break;
}
if(flag == 0)
++j;
}
if(i != j){
result.push_back(s.substr(i j-i));
i = j;
}
}
return result;
}
int lineSum;
void ReadLine(int **map)
{
// cout<<“逐行读取 将行读入字符串 行之间用回车换行区分“< ifstream fin(“data.txt“);
string s;
lineSet ls;
getline(fins);
ls.pointNum = atoi(s.c_str());
cout <<“节点数: “<< ls.pointNum << endl;
getline(fins);
ls.lineNum = atoi(s.c_str());
cout <<“边数: “<< ls.lineNum << endl;
int k;
while (getline(fins))
{
vector v = split(s “ “); //可按多个字符来分隔;
//for(vector::size_type i = 0; i != v.size(); ++i)
// cout< ls.set[k][0]=atoi(v[0].c_str());
ls.set[k++][1]=atoi(v[1].c_str());
//cout << “Read from file: “ << s << endl;
}
k=0;
while(ls.set[k][0]!=-1){
map[ls.set[k][0]][ls.set[k][1]]=1;
map[ls.set[k][1]][ls.set[k][0]]=1;
k++;
}
for(int i=0;i for(int j=0;j if(map[i][j]==1&&i!=j){
++lineSum;
}
}
}
}
int * newIntRaw(int n)
{
return (int *)malloc(sizeof(int) * n);
}
int * newInt(int n int init)
{
int *p = newIntRaw(n);
int i;
for (i = 0; i < n; ++i)
p[i] = init;
return p;
}
int ** newMap(int n int m int init)
{
int **res = (int **)malloc(sizeof(int *) * n);
int i;
for (i = 0; i < n; ++i)
res[i] = newInt(m init);
return res;
}
typedef struct
{
int e;
int n;
int **map;
} Graph;
Graph * newGraph()
{
int n e;
int i;
int from to;
Graph *g = (Graph *)malloc(sizeof(Graph));
//cout<<“逐行读取 将行读入字符串 行之间用回车换行区分“< ifstream fin(“data.txt“);
string s;
lineSet ls;
getline(fins);
ls.pointNum = atoi(s.c_str());
相关资源
- 计算无向图中桥的数量并查集+路径压
- c++程序设计》第二版高等教育出版社
- C++标准库第2版_带书签_高清完整版
- SIFT代码,C/C++
- AES 加解密c++
- Linux环境下的文件安全传输(C/C++)
- 数据库管理系统原型开发C/C++
- C/C++程序 多元多项式的相乘
- 求解无向图中任意两点之间的所有路
- 维特比译码+卷积码编码程序C/C++实现
- 特洛伊木马(C/C++)
- Wolfe Powell 最优化方法 C++ 程序
- 基于c/c++实现的宿舍管理系统可做小型
- C/C++语言实现求矩阵的广义逆
- 基于C/C++的局域网聊天室源码
- 水库优化调度程序源代码
- 多目标车辆路径优化源代码
- 数据结构课程设计公交线路优化查询
- 网关模板 C/C++程序编写
- socket实现的CS框架
- C语言编程之运行速度优化方法汇总
- 贪心算法编写的01背包问题c/c++
- 操作系统实验-----MFC线程--购票系统演
- 基于二叉堆优化的A星算法
- 学生社团管理系统数据结构课程设计
- K近邻算法c/c++
- WOA鲸鱼优化算法 C++实现
- 编写并调试一个模拟的进程调度程序
- C/C++:Windows编程—代码获取本地所有
- 最新传智播客C/C++第五期完整视频 R
评论
共有 条评论