Advertisement
MarioYC

TJU 3783 - Cards

Apr 29th, 2012
320
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.54 KB | None | 0 0
  1. #include <cstdio>
  2. #include <cstring>
  3. #include <algorithm>
  4. #include <vector>
  5.  
  6. using namespace std;
  7.  
  8. int E,last[500],next[250000],to[250000];
  9.  
  10. void add_edge(int u, int v){
  11.     to[E] = v; next[E] = last[u]; last[u] = E++;
  12. }
  13.  
  14. int l[500],r[500];
  15. bool visited[500];
  16.  
  17. bool dfs(int pos){
  18.     if(visited[pos]) return 0;
  19.     visited[pos] = 1;
  20.    
  21.     for(int e = last[pos];e != -1;e = next[e]){
  22.         if(l[ to[e] ] == -1 || dfs(l[ to[e] ])){
  23.             r[pos] = to[e];
  24.             l[ to[e] ] = pos;
  25.             return 1;
  26.         }
  27.     }
  28.    
  29.     return 0;
  30. }
  31.  
  32. int main(){
  33.     int n,m,a[500],b[500];
  34.    
  35.     while(true){
  36.         scanf("%d %d",&n,&m);
  37.        
  38.         if(n == 0) break;
  39.        
  40.         for(int i = 0;i < n;++i) scanf("%d",&a[i]);
  41.         for(int i = 0;i < m;++i) scanf("%d",&b[i]);
  42.        
  43.         memset(last,-1,sizeof last);
  44.         E = 0;
  45.        
  46.         for(int i = 0;i < n;++i)
  47.             for(int j = 0;j < m;++j)
  48.                 if(__gcd(a[i],b[j]) > 1)
  49.                     add_edge(i,j);
  50.        
  51.         memset(l,-1,sizeof l);
  52.         memset(r,-1,sizeof r);
  53.        
  54.         int ans = 0;
  55.         bool change = true;
  56.        
  57.         while(change){
  58.             memset(visited,0,sizeof visited);
  59.             change = 0;
  60.            
  61.             for(int i = 0;i < n;++i)
  62.                 if(r[i] == -1)
  63.                     change |= dfs(i);
  64.         }
  65.        
  66.         for(int i = 0;i < n;++i)
  67.             if(r[i] != -1) ++ans;
  68.        
  69.         printf("%d\n",ans);
  70.     }
  71.    
  72.     return 0;
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement