#include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<algorithm> #include<cstdlib> #include<map> #include<queue> #include <deque> #include <list> #include <ctime> #include <stack> #include <vector> #include<set> #define Maxn 128 #define MOD typedef long long ll; #define FOR(i,j,n) for(int i=j;i<=n;i++) #define DFR(i,j,k) for(int i=j;i>=k;--i) #define lowbit(a) a&-a #define Max(a,b) a>b?a:b #define Min(a,b) a>b?b:a const int inf = 0x3f3f3f3f; const double pi = acos(-1.0); using namespace std; int n,m,k,id,x,y,sum; int map_s[Maxn][Maxn]; int match[Maxn]; int book[Maxn]; int DFS(int u) { FOR(i,1,m-1) {if(!book[i]&&map_s[u][i]) {book[i]=1; if(!match[i]||DFS(match[i])) { match[i]=u; return 1; } } } return 0; } int main() { while(~scanf("%d",&n)&&n) { sum=0; scanf("%d%d",&m,&k); memset(map_s,0,sizeof(map_s)); memset(match,0,sizeof(match)); FOR(i,1,k) { scanf("%d%d%d",&id,&x,&y); if(x>0&&y>0)map_s[x][y]=1; } FOR(i,1,n-1) { memset(book,0,sizeof(book)); if(DFS(i))sum++; } printf("%d\n",sum); } return 0; }