pascal的问题,解答
1、切换频道题目描述N个退休的老人在一起看电视。电视里有M个电视频道,分别从1到M编号。每个老人都有自己喜欢的和讨厌的电视频道。如果电视里正在播放的频道是其中一个老人讨厌...
1、切换频道
题目描述
N个退休的老人在一起看电视。电视里有M个电视频道,分别从1到M编号。每个老人都有自己喜欢的和讨厌的电视频道。
如果电视里正在播放的频道是其中一个老人讨厌的,他会起身,慢慢走到电视机前然后换到一个他最喜欢的频道,然后回到他舒适的椅子上。如果有多个老人讨厌正在播放的频道,在其中最年轻的以为会起身(他最年轻,所以他不介意),而剩下的依旧在原来的位置上。
当然,在改变了频道之后,可能会有另一个老人发现新的频道是他最不能忍受的,然后他就会重新去改电视频道。由于老人都是固执的,这样可能循环下去。现在给定每个老人喜欢的和讨厌的频道以及电视上初始的频道,确定需要改变多少次频道之后才能使所有的老人都能开心,不改变频道。
输入
输入第一行包括三个整数N,M和P(1≤N,M≤105,1≤P≤M),表示老人的数量,电视频道数量以及电视机上初始的频道。接下来的N行中每行包括两个整数a和b(1≤a,b≤M,a≠b),表示每个老人最喜欢的和最讨厌的电视频道。给定的输入顺序是按照老人年纪从小到大给出的。
输出
输出需要交换多少次才能使所有老人都满意,如果这个该频道的循环不能结束,那么输出-1。
样例输入
3 4 2
1 2
2 3
3 2
3 3 1
1 2
2 3
3 1
4 5 2
1 3
2 3
3 2
5 1
样例输出
1
-1
3
提示
【数据范围】
50%的测试数据,1≤N,M≤1000。
【样例解释】
第一个样例中,一开始电视频道为2,最年轻的和最年长的老人不喜欢,然后最年轻的老人改了频道变成1,这样每个人都一起看频道1,没有冲突。 展开
题目描述
N个退休的老人在一起看电视。电视里有M个电视频道,分别从1到M编号。每个老人都有自己喜欢的和讨厌的电视频道。
如果电视里正在播放的频道是其中一个老人讨厌的,他会起身,慢慢走到电视机前然后换到一个他最喜欢的频道,然后回到他舒适的椅子上。如果有多个老人讨厌正在播放的频道,在其中最年轻的以为会起身(他最年轻,所以他不介意),而剩下的依旧在原来的位置上。
当然,在改变了频道之后,可能会有另一个老人发现新的频道是他最不能忍受的,然后他就会重新去改电视频道。由于老人都是固执的,这样可能循环下去。现在给定每个老人喜欢的和讨厌的频道以及电视上初始的频道,确定需要改变多少次频道之后才能使所有的老人都能开心,不改变频道。
输入
输入第一行包括三个整数N,M和P(1≤N,M≤105,1≤P≤M),表示老人的数量,电视频道数量以及电视机上初始的频道。接下来的N行中每行包括两个整数a和b(1≤a,b≤M,a≠b),表示每个老人最喜欢的和最讨厌的电视频道。给定的输入顺序是按照老人年纪从小到大给出的。
输出
输出需要交换多少次才能使所有老人都满意,如果这个该频道的循环不能结束,那么输出-1。
样例输入
3 4 2
1 2
2 3
3 2
3 3 1
1 2
2 3
3 1
4 5 2
1 3
2 3
3 2
5 1
样例输出
1
-1
3
提示
【数据范围】
50%的测试数据,1≤N,M≤1000。
【样例解释】
第一个样例中,一开始电视频道为2,最年轻的和最年长的老人不喜欢,然后最年轻的老人改了频道变成1,这样每个人都一起看频道1,没有冲突。 展开
1个回答
展开全部
var
n,m,p:integer;
a,b:array[1..1000] of integer;
f:text;
i,k:integer;
q:integer;
function locate(p:integer;var q:integer):boolean;
{p为当前频道,q为讨厌者中最年轻者选择的频道,
函数值为是否有讨厌者}
var
i:integer;
begin
locate:=false;
for i:=1 to n do if p=b[i] then
begin q:=a[i]; locate:=true; break; end;
{writeln(p:3,q:3);}
end;
begin
assign(f,'切换频道.in'); reset(f);
readln(f,n,m,p);
for i:=1 to n do readln(f,a[i],b[i]);
close(f);
k:=0;
while locate(p,q)and(k<m) do begin inc(k); p:=q; end;
if k=m then k:=-1;
writeln(k);
end.
追问
错误的呀!能帮忙改改吗?
追答
错的吗?不可能!
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询