zoukankan      html  css  js  c++  java
  • 网络(network)

    #include<iostream>
    using namespace std;
    const int max_M = 5000005; 
    const int max_N = 500005;
    int n, m, X[max_M],Y[max_M], P[max_N], preX[max_M], preY[max_M], ans[max_M];
    bool flag[max_N];
    int main() 
    {
        cin>>n>>m;
        cout<<"YES"<<endl;
        for (int i = 1; i <= m; i++) 
        {
            cin>>X[i]>>Y[i];
        }
        for (int i = 1; i < n; i += 2) 
        {
            P[i] = i + 1, P[i + 1] = i;
        }
        if (n%2) 
        {
            P[n] = n;
        }
        for (int i = 1; i <= m; i++) 
        {
            preX[i] = P[X[i]]; 
            preY[i] = P[Y[i]]; 
            if (P[X[i]] == Y[i]) 
            {
                continue;
            }
            if (P[X[i]] == X[i]) 
            {
                P[P[Y[i]]] = P[Y[i]]; 
                P[X[i]] = Y[i];
                P[Y[i]] = X[i];
            }
            else if (P[Y[i]] == Y[i]) 
            {
                P[P[X[i]]]=P[X[i]];
                P[X[i]] = Y[i];
                P[Y[i]] = X[i];
            }
            else 
            {
                int x = X[i];
                int y = Y[i]; 
                int u = P[X[i]]; 
                int v = P[Y[i]];
                P[x] = y;
                P[y] = x; 
                P[u] = v; 
                P[v] = u;
            }
        }
        for (int i = 1; i <= n; i++) 
        {
            if (i <= P[i]) 
            {
                flag[i] = true;
            }
        }
        for (int i = m; i>=1; i--) 
        {
            P[X[i]] = preX[i];
            P[Y[i]] = preY[i]; 
            P[P[X[i]]] = X[i];
            P[P[Y[i]]] = Y[i];
            if (P[X[i]] == Y[i]) 
            {
                if (flag[X[i]]) 
                {
                    ans[i] = 0;
                }
                else 
                {
                    ans[i] = 1;
                }
            }
            else if (P[X[i]] == X[i]) 
            {
                if (flag[X[i]]) 
                {
                    ans[i] = 0;
                }
                else 
                {
                    flag[X[i]] = true;
                    flag[Y[i]] = false;
                    ans[i] = 1;
                }
            }
            else if (P[Y[i]] == Y[i]) 
            {
                if (flag[Y[i]]) 
                {
                    ans[i] = 1;
                }
                else 
                {
                    flag[Y[i]] = true;
                    flag[X[i]] = false;
                    ans[i] = 0;
                }
            }
            else 
            {
                int x = X[i];
                int y = Y[i];
                int u = P[X[i]]; 
                int v = P[Y[i]];
                if (flag[x]) 
                {
                    ans[i] = 0;
                    if (flag[u]) 
                    {
                        flag[x] = false;
                        flag[y] = true;
                    }
                }
                else 
                {
                    ans[i] = 1;
                    if (flag[v]) 
                    {
                        flag[y] = false;
                        flag[x] = true;
                    }
                }
            }
        }
        for (int i = 1; i <= m; i++)
        {
            cout<<ans[i];
        }
        return 0;
    }

     答案一定是YES

  • 相关阅读:
    css实现文字相对于图片垂直居中
    node能做的性能优化
    vue.config.js中vue的配置
    react/vue项目腾讯云/阿里云服务器linux部署
    taro项目结构分析和坑
    vscode自动编译less
    css彩色字体
    微信小程序文件上传
    小程序html解析
    小程序表单
  • 原文地址:https://www.cnblogs.com/Chri-K/p/13833028.html
Copyright © 2011-2022 走看看