zju monthly contest 2012 aug.
2012-08-28 18:25
281 查看
#include <cstdio> #include <cstring> #include <map> #include <algorithm> using namespace std; #pragma comment(linker, "/STACK:1024000000,1024000000") const int maxn=40000; const int inf=0x7fffffff; const int s=0; struct edge{ int v,next,w; }edge[1000000]; int head[2*maxn],cnt;//for sap void addedge(int u, int v, int w) { edge[cnt].v=v; edge[cnt].w=w; edge[cnt].next=head[u]; head[u]=cnt++; edge[cnt].v=u; edge[cnt].w=0; edge[cnt].next=head[v]; head[v]=cnt++; } int sap(int t) { int pre[2*maxn],cur[2*maxn],dis[2*maxn],gap[2*maxn]; int flow=0 , aug=inf ,u; bool flag; for (int i=0 ; i<=t ; ++i) { cur[i]=head[i]; gap[i]=dis[i]=0; } gap[s]=t+1; u=pre[s]=s; while (dis[s]<=t) { flag=0 ; for (int &j=cur[u] ; ~j ; j=edge[j].next) { int v=edge[j].v; if (edge[j].w>0 && dis[u]==dis[v]+1) { flag=1; if(edge[j].w<aug)aug=edge[j].w; pre[v]=u; u=v; if (u==t) { flow+=aug; while (u!=s) { u=pre[u]; edge[cur[u]].w-=aug; edge[cur[u]^1].w+=aug; } aug=inf; } break; } } if (flag)continue ; int mindis=t+1; for (int j=head[u]; ~j ; j=edge[j].next) { int v=edge[j].v; if (edge[j].w>0 && dis[v]<mindis) { mindis=dis[v]; cur[u]=j; } } if(--gap[dis[u]]==0)break; gap[dis[u]=mindis+1]++; u=pre[u]; } return flow; } void init () { memset (head , -1 , sizeof(head)); cnt=0; } map <int , int >idx; int ct[234]; int info[234][234]; int c[234]; int main () { int n; while (~scanf("%d", &n)) { init(); idx.clear(); int Id=n; for (int i=1; i<=n; ++i) { int b; scanf("%d %d %d", ct+i, &b, c+i); addedge(0, i, c[i]); for (int j=0; j<ct[i]; ++j) { scanf("%d", &info[i][j]); if(idx[info[i][j]]==0)idx[info[i][j]]=++Id; } } for (int i=1; i<=n; ++i) { for (int j=0; j<ct[i]; ++j) addedge(i, idx[info[i][j]], 1); } for (int i=n+1; i<=Id; ++i) addedge(i, Id+1, 1); int m; scanf("%d", &m); addedge(0, m, ct[m]-c[m]); int ans=sap(Id+1); printf("%d\n", ans); } return 0; }
相关文章推荐
- 2012 Asia Tianjin Regional Contest - str2int
- 2012 Asia Tianjin Regional Contest - Queue Sequence
- First Bangladeshi Contest 2012-2013 Season[7月12日暑假集训]
- NEERC, Northern Subregional Contest 2012 E dp
- 2012 Multi-University Training Contest 4
- 2012 Multi-University Training Contest 6-1006 hdu4355 Party All the Time
- 2012 Multi-University Training Contest 7
- 2012 Multi-University Training Contest 7-1006 hdu4365 Palindrome graph
- hdu 4374 One hundred layer (dp +单调队列 2012 Multi-University Training Contest 8 )
- hdu 4336 Card Collector 2012 Multi-University Training Contest 4
- HDU 4433 locker(DP)(2012 Asia Tianjin Regional Contest)
- 2012 Asia Hangzhou Regional Contest--hdu4460Friend Chains(SPFA)
- USACO 2012 December Contest, Bronze Problem 1. Meet and Greet (模拟)
- Fudan University Local Contest 2012 [7月8日暑假集训]
- 2012 Multi-University Training Contest 2
- 2012 Multi-University Training Contest 3
- hdu 4340 Capturing a country(树形DP) 2012 Multi-University Training Contest 5
- 2012 Multi-University Training Contest 6-1010 hdu4359 Easy Tree DP?
- 2012 Multi-University Training Contest 7:Palindrome graph
- 2012 Asia Hangzhou Regional Contest--hdu4462Scaring the Birds(IDA)