暑期训练赛(6)A题
2014-08-05 18:04
239 查看
#include<iostream> #include<cstdio> #include<cstring> #include<vector> #include<queue> using namespace std; const int maxn = 120005; int du1[maxn],du2[maxn]; vector<int>G[maxn]; queue<int>q1,q2; int n,m,k; int solve() { for(int i=1;i<=n;++i) if(!du1[i])q1.push(i); for(int i=n+1;i<=n+m;++i) if(!du1[i])q2.push(i); int res=1; while(!q1.empty()||!q2.empty()) { if(!q1.empty())++res; while(!q1.empty()) { int x=q1.front(); q1.pop(); for(int i=0;i<G[x].size();++i) { int u=G[x][i]; --du1[u]; if(!du1[u]) { if(u>n)q2.push(u); else q1.push(u); } } } if(!q2.empty())++res; while(!q2.empty()) { int x=q2.front(); q2.pop(); for(int i=0;i<G[x].size();++i) { int u=G[x][i]; --du1[u]; if(!du1[u]) { if(u>n)q2.push(u); else q1.push(u); } } } } for(int i=1;i<=n;++i) if(!du2[i])q1.push(i); for(int i=n+1;i<=n+m;++i) if(!du2[i])q2.push(i); int ans=1; while(!q1.empty()||!q2.empty()) { if(!q2.empty())++ans; while(!q2.empty()) { int x=q2.front(); q2.pop(); for(int i=0;i<G[x].size();++i) { int u=G[x][i]; --du2[u]; if(!du2[u]) { if(u>n)q2.push(u); else q1.push(u); } } } if(!q1.empty())++ans; while(!q1.empty()) { int x=q1.front(); q1.pop(); for(int i=0;i<G[x].size();++i) { int u=G[x][i]; --du2[u]; if(!du2[u]) { if(u>n)q2.push(u); else q1.push(u); } } } } return min(ans,res); } int main() { while(scanf("%d%d%d",&n,&m,&k)&&n||m||k) { for(int i=1;i<=n+m;++i) G[i].clear(),du1[i]=du2[i]=0; while(!q1.empty())q1.pop(); while(!q2.empty())q2.pop(); for(int i=1;i<=k;++i) { int u,v; scanf("%d%d",&u,&v); G[v].push_back(u); du1[u]++; du2[u]++; } printf("%d\n",solve()); } return 0; }
相关文章推荐
- 2013 - ECJTU 暑期训练赛第三场-problem-D
- 2013 - ECJTU 暑期训练赛第三场-problem-L
- 2013 - ECJTU 暑期12级训练赛第一场-Problem-H
- 2013 - ECJTU 暑期训练赛第三场-problem-H
- 暑期训练赛(6)B
- 2013 - ECJTU 暑期训练赛第四场-problem-A
- 暑期训练赛(6)C
- 2013 - ECJTU 暑期训练赛第四场-problem-C
- 2013 - ECJTU 暑期训练赛第八场-problem-A
- 暑期训练赛(6)D
- 暑期集训Day2训练赛D题Spreadsheets(codeforces 1B)
- 2013 - ECJTU 暑期训练赛第四场-problem-L
- 2013 - ECJTU 暑期训练赛第八场-problem-B
- 暑期训练赛(6)E
- 暑期集训训练赛2(uva11210) 你会打麻将吗?
- 2017暑期ACM俱乐部个人训练赛第2场 G题 Balanced Photo(树状数组求逆序对)
- 2017暑期ACM俱乐部个人训练赛第5场 G.礼物 (矩阵快速幂)
- 2013 - ECJTU 暑期训练赛第二场-problem-A
- 2013 - ECJTU 暑期训练赛第四场-problem-F
- 2013 - ECJTU 暑期训练赛第八场-problem-C