电脑我懂你吧 关注:120贴子:582
  • 0回复贴,共1

我来求助哈,C++的,longlong了也不行,下面哪里非法访问了呢?

只看楼主收藏回复

#include <iostream>
using namespace std;
#include<cstdio>
#include<cstdlib>
#include<string.h>
#include<string>
typedef long long longint;
longint pre[1000000];
bool t[100000]; //t 用于标记独立块的根结点
longint Find(longint x)
{
longint r=x;
while(r!=pre[r])
r=pre[r];
longint i=x,j;
while(pre[i]!=r)
{
j=pre[i];
pre[i]=r;
i=j;
}
return r;
}
void mix(longint x,longint y)
{
longint fx=Find(x),fy=Find(y);
if(fx!=fy)
{
pre[fy]=fx;
}
}
void nums(longint n)
{
memset(t,0,sizeof(t));
longint ans=0,i;
for(i=1;i>0&&i<=n;i++) //标记根结点
{
t[ Find(i) ]=1;
}
for(i=1;i>0&&i<=n;i++)
if(t[i]==1)
ans++;
cout<<ans<<endl;
}
int main()
{
longint i; longint a,b;
longint n; cin>>n;
memset(pre,0,sizeof(pre));
for(i=1;i>0&&i<=n;i++) //初始化
pre[i]=i;
longint m; char issue;
cin>>m;
while(m--){
cin>>issue;
if(issue=='Q'){
nums(n);
}
else
if(issue=='Y'){
cin>>a>>b;
mix(a,b);
}
}
}


IP属地:广东1楼2017-06-08 00:11回复