• 大小: 6KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-29
  • 语言: C/C++
  • 标签: c/c++  优化  无向图  

资源简介

输入节点数和边数自动生成无向图并计算桥的数量,一个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());

评论

共有 条评论