http://www.tsinsen.com/

清橙网格自动评测系统

>> 用户名或邮箱:   密码:       忘记密码   其他登录:
 
 
 
A1501. Catherine与生日宴会(罗剑桥)
时间限制:1.0s   内存限制:512.0MB  
总提交次数:273   AC次数:4   平均分:24.40
将本题分享到:
   
 
  【问题描述】  再过几天就是Catherine的生日了!Catherine决定举办一个生日宴会,并想邀请她的好朋友们参加宴会。
  ......
  Catherine是个很有魅力的人,她一共有N个好朋友。而她的这些好朋友互相之间可能认识,也可能不认识,还可能有矛盾
  这N个人之间是否认识是无所谓的,但是如果两个人之间存在矛盾就会产生一些问题。这里,矛盾关系是双向的
  Catherine知道,如果她邀请的任意一个好朋友小X在宴会上只看到一个与小X有矛盾的人小Y,就会不太高兴,不过可以假装没看见。但是,如果小X又看到另一个与小X有矛盾的人小Z,小X就会很生气并离开宴会。
  ......
  为了防止这样的情形出现,Catherine决定只邀请她的一部分好朋友参加宴会,使得对于这些人中的任意一个人至多有一个与他(或她)有矛盾的人同时受到邀请。这样,就不会有人中途离开宴会了。
  ......
  经过调查,Catherine已经掌握了在她的N个好朋友中有哪些人之间存在矛盾。在保证上述原则的前提下,她希望邀请尽量多的好朋友参加宴会。
  请你帮助Catherine计算出她最多邀请多少个好朋友参加这个宴会。
  ......
注意,输入文件包含多组测试数据。
输入格式
  第一行包含一个正整数T,表示有T组测试数据。接下来依次是T组测试数据。
  每组测试数据的第一行包含一个正整数N,表示Catherine的好朋友数目。
  接下来N行,每行一个长度为N的字符串。其中第i个字符串Str[i]的第j个字符Str[i][j]表示第i个人和第j个人是否有矛盾。若Str[i][j] = ‘Y’则表示ij有矛盾;否则的话,Str[i][j] = ‘N’表示没有矛盾。
  数据保证对于任意1i, jN,有Str[i][j] = Str[j][i];对于任意1iN,有Str[i][i] = ‘N’
输出格式
  输出T行,每行一个整数,依次表示每组测试数据的答案。
样例输入
4
3
NYY
YNY
YYN
6
NYYNNN
YNYNYN
YYNYYY
NNYNNN
NYYNNY
NNYNYN
4
NNYN
NNNY
YNNN
NYNN
7
NNNNNNN
NNNNYNY
NNNYYYY
NNYNNYY
NYYNNNN
NNYYNNN
NYYYNNN
样例输出
2
4
4
5
样例说明
  第1组数据:3个人两两之间都有矛盾,所以最多同时邀请两个人。
  第2组数据:一个可行的最优方案是邀请编号为1456的朋友。
  第3组数据:每个人恰好和一个人有矛盾,因此可以邀请所有人。
  第4组数据:最优方案是唯一的,即邀请编号为12456的朋友。
数据规模和约定
  设M表示N个人之间存在多少对矛盾关系。
  对于10%的数据:1 N 10
  对于30%的数据:1 N 20
  对于50%的数据:1 N 30
  另有10%的数据:N = 400 M 40
  另有10%的数据:N = 40500 M 780
  对于100%的数据:1 ≤ N ≤ 40,0 ≤ M ≤ 780,1 ≤ T ≤ 50。