c++ 随机生成社区数据

来源:互联网 发布:国家社科期刊数据库 编辑:程序博客网 时间:2024/06/05 06:24
#include<stdio.h>#include <algorithm>#include<vector>#include<time.h>#include<stdlib.h>#include<math.h>#include<map>using namespace std;const int N = 1000005;vector<int> g[N];map<int,vector<int> > mp;int getRand(int n){int value = (rand()%n)*(rand()%n);//printf("%d\n",value);return value%n;}int main(){int n,m;int i,j,k;FILE *f_input = fopen("graph.txt","w");FILE *f_result = fopen("result.txt","w");srand(time(NULL));//n = 375000;//m = 100;    printf("input n:");scanf("%d",&n);printf("input m:");scanf("%d",&m);//create a graph//int size = 3750;int size = n/m;fprintf(f_result,"%d\n",size);for(i =0;i<m;i++)mp[i]=(vector<int>)NULL;for(i=0;i<size;i++){vector<int> v;map<int,int> vis;//if(i%100 ==0 ) printf("%d\n",i);fprintf(f_result,"%d %d\n",i,m);for(j=0;j<m;j++){int value = getRand(n);if(vis[value]) {j--;continue;}vis[value] =1;//v.push_back(value);if(find(mp[j].begin(),mp[j].end(),value)==mp[j].end()){mp[j].push_back(value);v.push_back(value);fprintf(f_result,"%d ",value);}else{j--;}}for(vector<int>::iterator it2=v.begin();it2!=v.end();++it2)printf("%d ",*it2);       printf("\n");for(map<int,vector<int> >::iterator it=mp.begin();it!=mp.end();++it){printf("%d ",it->first);for(vector<int>::iterator it1=it->second.begin();it1!=it->second.end();it1++)printf("%d ",*it1);printf("\n");}printf("\n");fprintf(f_result,"\n");for(j=0;j<m;j++){int len = getRand(2*m);for(k=0;k<len;k++){int key = getRand(m);if(key == j) {k--;continue;}//if(find(g[v[j]].begin(),g[v[j]].end(),v[key])!=g[v[j]].end())  {k--;continue;}                //printf("%d ",find(g[v[j]].begin(),g[v[j]].end(),v[key])!=g[v[j]].end());//printf("%d\n",key);g[v[j]].push_back(v[key]);    g[v[key]].push_back(v[j]);//vector<int>::iterator it= g[v[j]].begin();//vector<int>::iterator end = g[v[j]].end();// for(;it!=end;++it)//printf("%d ",*it);}printf("\n\n\n");}}printf("\n");for(i=0;i<n;i++){//if(i%100 ==0 )printf("%d\n",i);if(g[i].size()==0) continue;fprintf(f_input,"%d %d",i,i);for(j=0;j<g[i].size();j++){fprintf(f_input," %d",g[i][j]);printf("%d ",g[i][j]);}fprintf(f_input,"\n");printf("\n");}return 0;}

0 0
原创粉丝点击