博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Wikioi 1222 信与信封问题(二分图匹配)
阅读量:5067 次
发布时间:2019-06-12

本文共 1493 字,大约阅读时间需要 4 分钟。

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

你可能感兴趣的文章
前端开发的正确姿势——各种文件的目录结构规划及引用
查看>>
2013年上半年 中级数据库工程师
查看>>
观察者设计模式
查看>>
第二十六讲:基础一开放封闭原则
查看>>
使用plsql developer 创建用户
查看>>
[POJ2342]Anniversary party(树dp)
查看>>
[HDOJ1061]Rightmost Digit
查看>>
Function types cannot have argument labels 错误解决方案
查看>>
大家看看这个参数inctype你是否使用过?我做了以下测试,欢迎拍砖!
查看>>
Non-zero exit code (1)
查看>>
session喜欢丢值且占内存,Cookis不安全,用什么可以代替呢?
查看>>
粒子编辑器的选择1
查看>>
win 7 系统ie浏览器升级11版本后,f12功能不可用的问题
查看>>
编程之美 set 12 快速找出故障机器
查看>>
C# 模拟鼠标操作
查看>>
Android UI事件处理
查看>>
Eclipse背景颜色修改
查看>>
使用TabLayout快速实现一个导航栏
查看>>
Web开发的那点事--业务层常用功能
查看>>
中国象棋程序的设计与实现(四)-- 一次“流产”的写书计划
查看>>