1. 程式人生 > >cow and stall poj 1274

cow and stall poj 1274

mage insert style pre ios find con iter iostream

技術分享圖片


 1 #include<iostream>
 2 #include<set>
 3 #include<vector>
 4 using namespace std;
 5 int path(int cow, vector<set<int> >& cowToStall, vector<int>& matchStallToCow, set<int>& visited){
 6     for(set<int>::iterator it = cowToStall[cow].begin(); it != cowToStall[cow].end(); it++){
7 int stall = *it; 8 if(visited.find(stall) != visited.end()) continue ; 9 visited.insert(stall); 10 if(matchStallToCow[stall] == 0 || path(matchStallToCow[stall], cowToStall, matchStallToCow, visited)){ 11 matchStallToCow[stall] = cow; 12 return
1; 13 } 14 } 15 return 0; 16 } 17 int main() 18 { 19 int n, m; 20 while(cin>>n>>m){ 21 vector<set<int> > cowToStall(n + 1); 22 vector<int> matchStallToCow(m + 1, 0); 23 for(int i = 1; i <= n; i++){ 24 int
count, j; 25 cin>>count; 26 for(int k = 0; k < count; k++){ 27 cin>>j; 28 cowToStall[i].insert(j); 29 } 30 } 31 int ans = 0; 32 for(int i = 1; i <= n; i++){ 33 set<int> visited; 34 ans += path(i, cowToStall, matchStallToCow, visited); 35 } 36 cout<<ans<<endl; 37 } 38 return 0; 39 }

cow and stall poj 1274