2018-2019 ACM-ICPC, Asia East Continent Final L Eventual … Journey
Posted qingyuyyyyy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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; }
以上是关于2018-2019 ACM-ICPC, Asia East Continent Final L Eventual … Journey的主要内容,如果未能解决你的问题,请参考以下文章
训练20191009 2018-2019 ACM-ICPC, Asia East Continent Finals
2018-2019 ACM-ICPC, Asia Seoul Regional Contest
2019.05.02 第九次训练 2018-2019 ACM-ICPC, Asia Jiaozuo Regional Contest
2018-2019 ACM-ICPC, Asia Xuzhou Regional Contest Solution
2018-2019 ACM-ICPC, Asia Seoul Regional Contest
I. Distance (模拟)2018-2019 ACM-ICPC, Asia Jiaozuo Regional Contest