#include #define ff first #define ss second #define ll long long #define pb push_back using namespace std; typedef pair pii; const int maxn=50+125000+10; struct edge{ int u,v,flow; int cost; }; vectore; vectorvect[maxn]; void add_edge(int u,int v,int cost){ vect[u].pb(e.size()); e.pb({u,v,0,cost}); vect[v].pb(e.size()); e.pb({v,u,1,-cost}); ///printf("%d %d %lld edge\n",u,v,cost); } int source,sink; int pot[maxn],d[maxn]; int p[maxn],n,pos[maxn]; int send_flow(int &hasflow){ priority_queue >st; for(int i=source;i<=sink;i++)d[i]=2e9; memset(p,-1,sizeof(p)); memset(pos,0,sizeof(pos)); st.push({0,source}); d[source]=0; while(st.size()){ int x=st.top().ss; st.pop(); if(pos[x])continue; pos[x]=1; for(int i=0;icand; vector >cedge; int main(){ freopen("clothes.in","r",stdin); freopen("clothes.out","w",stdout); scanf("%d",&n); for(int i=1;i<=n;i++){ int m; scanf("%d",&m); for(int j=1;j<=m;j++){ int c,p; scanf("%d %d",&c,&p); cand.pb(c); cedge.pb({{i,c},p }); } } ///sort(cand.begin(),cand.end()); ///cand.resize( unique(cand.begin(),cand.end())-cand.begin() ); /*for(int i=0;i