codeves 1222

思路:先得到最大匹配,不为n,none,对于每个边,假如不可获缺,那么没有它一定无法完美匹配,对匹配的边依次删除,如果不能完美匹配就输出

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int N=102;
 4
 5 int a[N][N],vis[N];
 6 int c[N],d[N];
 7 int n;
 8 bool Find(int x){
 9     for(int i=1;i<=n;i++){
10         if(!a[x][i]&&!vis[i]){
11             vis[i]=1;
12             if(c[i]==0||Find(c[i])){
13                 c[i]=x;
14                 d[x]=i;return 1;
15             }
16         }
17     }
18     return 0;
19 }
20
21 int main(){
22
23     int x,y;
24     scanf("%d",&n);
25     while(scanf("%d%d",&x,&y)&&x&&y){
26         a[x][y]=1;
27     }
28     int all=0;
29     for(int i=1;i<=n;i++){
30         memset(vis,0,sizeof(vis));
31          if(Find(i)) all++;
32     }
33
34     if(all!=n) {
35         cout<<"none"<<endl;
36     }
37     else {
38         int  t=0;
39         for(int i=1;i<=n;i++){
40             memset(vis,0,sizeof(vis));
41             int z=d[i];
42             a[i][z]=1;
43             c[z]=0;d[i]=0;
44             if(!Find(i)){
45                 cout<<i<<" "<<z<<endl;t=1;
46                 c[z]=i;d[i]=z;
47             }
48             a[i][z]=0;
49         }
50         if(!t) cout<<"none"<<endl;
51     }
52 }
时间: 2024-11-08 17:29:56

codeves 1222的相关文章

2010辽宁省赛 NBUT 1222 English Game【字典树+DP】

[1222] English Game 时间限制: 1000 ms 内存限制: 131072 K 链接:Click Here! 问题描述 This English game is a simple English words connection game. The rules are as follows: there are N English words in a dictionary, and every word has its own weight v. There is a wei

[POJ 1222] EXTENDED LIGHTS OUT

题目 http://acm.pku.edu.cn/JudgeOnline/problem?id=1222 描述 给你一个5行6列的矩阵分别表示30个灯,矩阵map[i][j]为1表示灯亮着, 0表示灯没亮. 要求你输出解决方案. press[i][j]为1表示按一下,0表示不按.使得最后状态为所有灯都熄灭. 分析 高斯消元法(Gaussian elimination method) => 对于每个格子 map[i][j], 能影响他的格子为 (i-1, j), (i, j-1), (i+1, j

POJ 1222 extended lights out 高斯消元 板子题

题目链接:http://poj.org/problem?id=1222 题目描述:其实就是开关问题, 按下按钮会影响当前和周围的四个按钮, 问关闭所有灯的方案 解题思路:以前用搜索做过, 那时候是刚刚接触ACM的时候, 当时劲头真足啊, 这个解释的很好:http://blog.csdn.net/u013508213/article/details/47263183 代码: #include <iostream> #include <cstdio> #include <cstr

bzoj 1222: [HNOI2001]产品加工 dp

1222: [HNOI2001]产品加工 Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 381  Solved: 218[Submit][Status][Discuss] Description 某 加工厂有A.B两台机器,来加工的产品可以由其中任何一台机器完成,或者两台机器共同完成.由于受到机器性能和产品特性的限制,不同的机器加工同一产品所 需的时间会不同,若同时由两台机器共同进行加工,所完成任务又会不同.某一天,加工厂接到n个产品加工的任务,

SQL SERVER错误:已超过了锁请求超时时段。 (Microsoft SQL Server,错误: 1222)

在SSMS(Microsoft SQL Server Management Studio)里面,查看数据库对应的表的时候,会遇到"Lock Request time out period exceeded.(Microsoft SQL Server, 错误1222)",对应的中文错误提示为"已超过了锁请求超时时段. (Microsoft SQL Server,错误: 1222)",如下截图所示,不管是用一般权限的账号还是具有sysadmin角色的登录名都是如此. 这

HDU 1222: Wolf and Rabbit

HDU 1222: Wolf and Rabbit ///@author Sycamore, ZJNU ///@accepted_on 2017-01-24 #include<iostream> using namespace std; unsigned gcd(unsigned a, unsigned b) { return b == 0 ? a : gcd(b, a % b); } int main() { int P; cin >> P; while (P--) { unsi

codevs 1222 信与信封问题(二分图的完美匹配)

1222 信与信封问题 题目描述 Description John先生晚上写了n封信,并相应地写了n个信封将信装好,准备寄出.但是,第二天John的儿子Small John将这n封信都拿出了信封.不幸的是,Small John无法将拿出的信正确地装回信封中了. 将Small John所提供的n封信依次编号为1,2,…,n:且n个信封也依次编号为1,2,…,n.假定Small John能提供一组信息:第i封信肯定不是装在信封j中.请编程帮助Small John,尽可能多地将信正确地装回信封. 输入

HDU 1222 Wolf and Rabbit (扩展欧几里德应用)

Wolf and Rabbit Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6292    Accepted Submission(s): 3142 Problem Description There is a hill with n holes around. The holes are signed from 0 to n-1.

已超过了锁请求超时时段。(MicrosoftSQLServer,错误:1222)

操作SQLServer数据库时,遇到这样的问题:已超过了锁请求超时时段. (Microsoft SQL Server,错误: 1222) 经过查找材料了解为资源抢占,照成死锁,杀死进程就OK了,具体操作如下: select spId from master..SysProcesses where db_Name(dbID) = '数据库名称' and spId <> @@SpId and dbID <> 0 上面语句是获取进程ID,下面就是根据ID杀死相应进程 exec ('Kil