1222 信与信封问题
时间限制: 1 s
空间限制: 128000 KB
题目等级 : 钻石 Diamond
题解
题目描述 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,尽可能多地将信正确地装回信封。

输入描述 Input Description
n文件的第一行是一个整数n(n≤100)。信和信封依次编号为1,2,…,n。

n接下来的各行中每行有2个数i和j,表示第i封信肯定不是装在第j个信封中。文件最后一行是2个0,表示结束。

输出描述 Output Description
输出文件的各行中每行有2个数i和j,表示第i封信肯定是装在第j个信封中。请按信的编号i从小到大顺序输出。若不能确定正确装入信封的任何信件,则输出“none”。

样例输入 Sample Input
3

1 2

1 3

2 1

0 0

样例输出 Sample Output
1 1

program df;
var i,j,n,m,x,y,z,k,t,tt:longint;
a:array[0..500,0..500] of longint;
b:array[0..100] of boolean;
d,c,e:array[0..100] of longint;
function check(x:longint):boolean;
var i:longint;
begin
for i:=1 to n do
if (a[x,i]<>1) and (not b[i]) then
begin
b[i]:=true;
if (d[i]=0) or (check(d[i])) then
begin
d[i]:=x;
exit(true);
end;
end;
exit(false);
end;

begin
readln(n);
readln(x,y);
while (x<>0) and (y<>0) do
begin
a[x,y]:=1;
readln(x,y);
end;
t:=0;
for i:=1 to n do
begin
fillchar(b,sizeof(b),false);
if check(i) then inc(t); //先将匹配数量求出来
end;
for i:=1 to n do
for j:=1 to n do
if a[i,j]=0 then
begin
a[i,j]:=1; //假设这条边不存在,即i与j是不能匹配
fillchar(d,sizeof(d),0);
tt:=0;
for k:=1 to n do
begin
fillchar(b,sizeof(b),false);
if check(k) then inc(tt);
end;
if tt<>t then //产生了影响,则这条边是肯定的
begin
z:=1;
writeln(i,’ ‘,j);
end;
a[i,j]:=0;
end;
if z<>1 then writeln(‘none’);
end.

转载于:https://www.cnblogs.com/Gxyhqzt/p/7784287.html

Wikioi 1222 信与信封问题(二分图匹配)相关推荐

  1. Codevs 1222 信与信封问题 二分图匹配,匈牙利算法

    题目: http://codevs.cn/problem/1222/ 1222 信与信封问题   时间限制: 1 s   空间限制: 128000 KB   题目等级 : 钻石 Diamond 题解 ...

  2. Dinic二分图匹配 || Luogu P3386

    题面:[模板]二分图匹配 思路:Dinic实现二分图匹配,要建一个超级源点(S)和超级汇点(T),分别定为N+M+1和N+M+2 然后S去和N中的数建正边和反边,正边权值为1,反边权值为0:M中的数去 ...

  3. 二分图匹配匈牙利算法DFS实现

    1 /*==================================================*\ 2 | 二分图匹配(匈牙利算法DFS 实现) 3 | INIT: g[][]邻接矩阵; ...

  4. poj1274(二分图匹配)

    (一道基础的二分图匹配) 题目意思大概为N个牛和M个栅栏,一个牛和一个栅栏只能匹配一次,求最大匹配 直接套用二分图最大匹配模板即可 #include <iostream> #include ...

  5. poj2724(二分图匹配)

    题目大概意思为有部分奶酪需要处理,若两个奶酪的二进制只有一位不同,则可以一起处理,问最少需要处理几次 题目思路: 将可以一起处理的两个奶酪用边连接在一起,相当于边只连接二进制中有偶数个1的奶酪和二进制 ...

  6. 算法模板——二分图匹配

    实现功能为二分图匹配 原理:匈牙利算法,核心思想--匹配上了就配,没直接匹配上也要通过前面的腾出位置让这个匹配上(详见:趣写算法系列之--匈牙利算法) 本程序以Codevs2776为例 详见Codev ...

  7. 算法:ACM二分图匹配 HDU2063

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2063 摘录于互联网,原创作者redraiment,很详细的二分图匹配入门资料! 2063 过山车 Pr ...

  8. BZOJ1433 [ZJOI2009]假期的宿舍 - 二分图匹配

    题解 一道裸的二分图匹配,稍微有一点细节需要注意, 但是非常裸= = 本校并且住校的向自己的床和 自己认识的并且本校的人的床连边 离校的不需要向外连边 不是本校的就和自己认识的 并且是本校的人的床连边 ...

  9. POJ2536 二分图匹配

    题意:      有n只老鼠,m个洞,每个洞最多可以藏一只老鼠,每个老鼠的移动速度都是v,给你他们的当前坐标,和洞的坐标,突然老鹰来了,他们必须在s秒内跑到一个洞藏起来,问你最少有多少只老鼠被抓走了. ...

最新文章

  1. 第 13 章 编码风格
  2. PyQt5 笔记7 -- 多个类共享信号
  3. 【蓝桥杯Java_C组·从零开始卷】第四节、一维数组与二维数组
  4. mysql 查看锁_MySQL反应慢的排查思路
  5. 【Ajax】创建并封装
  6. jquery-jquery对向与dom标签对向
  7. bzoj1925: [Sdoi2010]地精部落 [dp]
  8. Java注解学习一:注解术语
  9. Linux基础命令:awk
  10. python生成随机中文_随机字生成器-Python
  11. redis的二进制安全机制理解
  12. VUE报错rowserslist: caniuse-lite is outdated. Please run the following command: `npx browser
  13. 如何排除BGA焊接问题-AE版
  14. eclipse 创建java窗体_eclipse新建窗体类
  15. 【企业】零和博弈:选择即博弈,审慎而行
  16. 调用Minitab软件应用于工业数据分析
  17. 卡尔曼滤波 | Matlab实现非线性卡尔曼滤波(Nonlinear KF)
  18. 学习记录 --【零基础CSS学习】12.字体属性
  19. UE4/UE5 代理使用介绍
  20. Linux下使用Shell脚本快速创建项目目录模板

热门文章

  1. A - Sliding Window POJ - 2823
  2. WPF将Ui保存为图片和保存位图
  3. 万达与IBM联手发力公有云市场,为不让马云当首富王健林也是拼了
  4. 轻松精通数据库管理之道——运维巡检之四(数据库备份)
  5. PLSQL_Database Link的基本概念和用法(概念)
  6. ExtJs学习准备工作(二) firebug firefox插件的安装
  7. sphinx的CJK分词
  8. 爱情八十二课,爱情三国杀
  9. C/C++面试题:什么是COM和ActiveX,简述DCOM。
  10. 搞笑之----普通话