Central Europe Regional Contest 2012 Problem J: Conservation
2013-10-03 18:01
387 查看
题目不难,感觉像是一个拓扑排序,要用双端队列来维护;
要注意细节,不然WA到死 = =!
View Code
要注意细节,不然WA到死 = =!
#include<cstdio> #include<cstring> #include<vector> #define maxn 100005 using namespace std; int q[2*maxn],count[2][maxn],tail,head,n,m,in[maxn]; vector<int>ve[maxn]; int solve(int lab) { head=tail=n; int cnt=0,cc=0,f=lab; for(int i=1;i<=n;i++) if(count[2-lab][i]==0&&in[i]==lab){q[tail++]=i;cnt++;} if(cnt==0)return -1; for(int i=1;i<=n;i++) if(count[2-lab][i]==0&&in[i]!=lab){q[tail++]=i;} while(head<tail) { int v=q[head++]; if(in[v]!=f){f=in[v];cc++;} int l=ve[v].size(); for(int i=0;i<l;i++) { count[2-lab][ve[v][i]]--; if(count[2-lab][ve[v][i]]==0) { if(in[v]==in[ve[v][i]]) q[--head]=ve[v][i]; else q[tail++]=ve[v][i]; } } } return cc; } int main() { int t,x,y; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); for(int i=1;i<=n;i++)ve[i].clear(); memset(count,0,sizeof count); for(int i=1;i<=n;i++)scanf("%d",&in[i]); for(int i=1;i<=m;i++) { scanf("%d%d",&x,&y); ve[x].push_back(y); count[0][y]++; count[1][y]++; } x=solve(1); y=solve(2); if(x<0||y<0)printf("%d\n",max(x,y)); else printf("%d\n",min(x,y)); } return 0; }
View Code
相关文章推荐
- Central Europe Regional Contest 2012 Problem I: The Dragon and the Knights
- Central Europe Regional Contest 2012 Problem H: Darts
- Central Europe Regional Contest 2012 Problem C: Chemist’s vows
- Central Europe Regional Contest 2012 Problem H: Darts
- Central Europe Regional Contest 2012 Problem c: Chemist’s vows
- Problem D - Wheels ACM/ICPC Central Europe Regional Contest 2014
- Problem I - Bricks ACM/ICPC Central Europe Regional Contest 2014
- Problem C - Sums ACM/ICPC Central Europe Regional Contest 2014
- 2012 JinHuaSite Regional Contest Problem D
- 2012 East Central Regional Contest 解题报告
- 2015-2016 ACM-ICPC, Central Europe Regional Contest (CERC 15) F.Frightful Formula(大数NTT)
- Central Europe Regional Contest 2014 [Gym - 100543C]
- acm/icpc live archive regional 1998 europe central problem d, spoj 45 commedia dell arte
- 2012 JinHuaSite Regional Contest Problem I
- hdu4430 Yukari's Birthday 2012 ACM_ICPC Asia ChangChun Regional Contest problem K
- Central Europe Regional Contest 2014 B [Gym - 100543B]
- [回文自动机优化转移] Central Europe Regional Contest 2014 G. Virus synthesis
- 【codeforces】2014-2015 ACM-ICPC, Central Europe Regional Contest (CERC 14) F Vocabulary【dp】
- 2017-2018 ACM-ICPC, Central Europe Regional Contest (CERC 17)
- 2012-2013 ACM-ICPC, NEERC, Central Subregional Contest H Milestones1 (暴力)