标签:
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
const int MAXN=505;
int nx,ny;
int g[MAXN][MAXN];
int cx[MAXN],cy[MAXN];
int mk[MAXN];
int n;
int ansFrom[MAXN],ansTo[MAXN];
int flag[MAXN];
int Tot;
int path(int u)
{
for(int v=1;v<=ny;v++)
{
if(g[u][v]&&!mk[v])
{
mk[v]=1;
if(cy[v]==-1||path(cy[v]))
{
cx[u]=v;
cy[v]=u;
return 1;
}
}
}
return 0;
}
int MaxMatch()
{
int res=0;
memset(cx,-1,sizeof(cx));
memset(cy,-1,sizeof(cy));
for(int i=1;i<=nx;i++)
{
if(cx[i]==-1)
{
memset(mk,0,sizeof(mk));
res=res+path(i);
}
}
return res;
}
int main()
{
while(~scanf("%d",&n)){
memset(g,0,sizeof g);
memset(flag,0,sizeof flag);
nx=n,ny=n;Tot=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
int x;
scanf("%d",&x);
if(x==1) g[i][j]=1;
}
if(MaxMatch()!=n) printf("-1\n");
else
{
int Ans=0; int tmp;
int f=0;
for(int i=1;i<=n;i++)
if(cx[i]==i)
flag[i]=1;
for(int i=1;i<=n;i++)
{
}
printf("%d\n",f);
for(int i=0;i<f;i++)
printf("R %d %d\n",ansFrom[i],ansTo[i]);
}}
return 0;
}
标签:
原文地址:http://www.cnblogs.com/zufezzt/p/4845423.html