zoukankan      html  css  js  c++  java
  • 2018-2019 ACM-ICPC, Asia East Continent Final L Eventual … Journey

    #include<iostream>
    using namespace std;
    const int MAX=2e5+10;
    int cnt[MAX];
    int ans[MAX];
    int a[MAX];
    int main() {
        int n,m,zero=0,one=0;
        cin>>n>>m;
        for(int i=1; i<=n; i++) {
            scanf("%d",&a[i]);
            if(a[i]==0)zero++;
            else one++;
        }
        while(m--) {
            int x,y;
            scanf("%d%d",&x,&y);
            if(a[x]!=a[y]) {
                cnt[x]++;//记录每个点的桥 
                cnt[y]++;
            }
        }
        int A=0,B=0;
        for(int i=1; i<=n; i++) {
            if(a[i]==0&&cnt[i])A++;//0类,而且有桥,
            if(a[i]==1&&cnt[i])B++;//1类,数量
        }
        for(int i=1; i<=n; i++) {
            ans[i]+=cnt[i];//与异类相连的桥的数目,也就是步数
            if(a[i]==0)ans[i]+=zero-1;//加同类
            else ans[i]+=one-1;//同类
            if(cnt[i]==0) {//如果 这个站没有建桥
                if(a[i]==0) {//如果是0类
                    ans[i]+=2*B;//一个点只算建在上面的一座桥,其他为在一个点上重复建桥的
                    ans[i]+=3*(one-B);//
                } else {
                    ans[i]+=2*A;
                    ans[i]+=3*(zero-A);
                }
            } else {//如果这个点建桥了
                if(a[i]==0)ans[i]+=2*(one-cnt[i]);
                //如果是0类, 那么到1类的其他点的距离就是2
                else ans[i]+=2*(zero-cnt[i]);
            }
        }
        for(int i=1; i<=n; i++)
            cout<<ans[i]<<" ";
        return 0;
    }
  • 相关阅读:
    windows修复移动硬盘文件夹打不来的问题
    secureCRT设置
    core dump配置
    ssh免密登陆的问题解决
    crontab的环境变量
    tmux配置
    shell的技巧笔记
    记一次route配置不起作用的问题解决过程
    crontab笔记
    Python中的一个诡异编码问题的追踪
  • 原文地址:https://www.cnblogs.com/QingyuYYYYY/p/12001477.html
Copyright © 2011-2022 走看看