为什么提交时编译失败,在devc++已经编译成功了啊

// input code here
```#include<iostream>
using namespace std;
int n,qq,x,y,f[1000001],cnt[1000001],t,a,b,s[1000001];
struct re
{
    int x,y;
    string st;
};
re q[1000001];
int hash(int x)
{
    int t;
    t=x%999999;
    if (s[t]==0)
    {
        s[t]=x;
        f[t]=t;
        return t;
    }
    if (s[t]==x)
    {
        f[t]=t;
     return t;
    }
    for (int i=1;i<=1000000;i++) 
    if (s[i]==0) 
    {
        s[i]=x;
        f[i]=i;
        return i;
    } 
}
int find(int x)
{
    if (f[x]==x) return x;
    int fa=f[x];
    f[x]=find(f[x]);
    cnt[x]=(cnt[fa]+cnt[x])%2;
    return f[x];
}
bool judge(int x,int y,int t)
{
    if ((cnt[x]+cnt[y])%2==1&&t==0) return false;
    if ((cnt[x]+cnt[y])%2==0&&t==1) return false;
    return true; 
}
int main()
{
    cin>>n;
    cin>>qq;
    for(int i=1;i<=qq;i++)
    {
        cin>>q[i].x>>q[i].y>>q[i].st;
        q[i].x--;
        q[i].x=hash(q[i].x);
        q[i].y=hash(q[i].y);    
    }
    for (int i=1;i<=qq;i++)
    {
         if (q[i].st=="even") t=0;
        if (q[i].st=="odd") t=1;
        x=q[i].x; y=q[i].y;
        a=find(x); b=find(y);
        if (a==b) 
        {
                if (!judge(x,y,t)) 
                {
                    cout<<i-1;
                    return 0;
                }
        } 
        if (a!=b) 
        {
            f[a]=b;
            cnt[a]=(cnt[x]+cnt[y]+t)%2;
        } 
    }
    cout<<qq;
    return 0;
}

0 条评论

目前还没有评论...

信息

ID
1112
难度
6
分类
数据结构 | 并查集 点击显示
标签
递交数
2491
已通过
620
通过率
25%
被复制
13
上传者