結構體初始化的一點注意 -std=gnu++0x

一種簡單實現並查集;類封裝,若是能夠動態地開闢 就較好一點
  #include <iostream>
using namespace std;
/*
對與n個元素間是否有關係
請自動將1-n序列一一與之對應
下面進行數組操做
*/
#define n  10// 本例 最大10元素間判斷
int a[n];

/*
struct er
{
    int x,y;
    er(int xx,int yy){x=xx;y=yy;}
    er(){}  //注意這一點
};
void seg(er data[],int m)
{
    for(int i=0;i<n;i++) a[i]=-1;
    for(int i=0;i<m;i++)
    {
        a[data[i].x]-=1;
        a[data[i].y]=data[i].x;
    }
}
int find(int x,int y)
{
    if(a[x]==a[y]&&a[x]!=-1) return 1;
    if(a[y]==x) return 1;
    if(y==a[x]) return 1;
   return 0;
}
void test()
{
    er  data[5]={{0,1},{0,2},{0,3},{4,5}};
    seg(data,4);
    cout<<find(1,2)<<endl;
}
*/
class  bd
{
     
    public:
         int a[n];
         bd()
         {
           for(int i=0;i<n;i++) a[i]=-1;  
         }
    void  set(int x,int y){a[x]--;a[y]=x;}
    int   find(int x,int y)
    {
    if(a[x]==a[y]&&a[x]!=-1) return 1;
    if(a[y]==x) return 1;
    if(y==a[x]) return 1;
   return 0;
    }
};
int main()
{     
    
    bd  s;
    s.set(0,1);
    s.set(0,2);
    s.set(0,3);
    s.set(4,5);
    cout<<s.find(0,1)<<endl;
    cout<<s.find(1,2)<<endl;
    cout<<s.find(0,4)<<endl;
    cout<<s.find(4,5)<<endl;
	cout << " 1,1,0,1" << endl;
	return 0;
}
相關文章
相關標籤/搜索