【C】
检查网络之并查集
作者:举一反三 / 发布于2012/4/7/ 653
给定一个计算机网络以及机器间的双向连线列表,每一条允许两端的计算机进行直接的我呢就传输,其他计算机间若存在一条连通路径,也可以进行间接的文件传输。现要求判断任意指定两台计算机之间是否可以进行文件传输。
【输入要求】
第一行包含一个整数N(N≤10000),即网络中计算机的总台数,每台计算机可用1到N之间的一个正整数表示。接下来的几行输入格式为I C1 C2或C C1 C2或S,其中C1和C2是两台计算机的序号,I表示在C1和C2间输入一条连线,C表示检查C1和C2间是否可以传输文件,S表示该组测试结束。
当N为0时,表示全部测试结束,不要对该数据做任何处理。
【输出要求】
(1)对每一组C开头的测试,检查C1和C2间是否可以传输文件,若可以,则在一行中输出“yes”,否则输出“no”。
(2)当读到S时,检查整个网络。若网络中任意两台机器间都可以传输文件,则是在一行中输出“The network is connected”,否则输出“There are k components。”,其中k是网络中连通集的个数。
当N为0时,表示全部测试结束,不要对该数据做任何处理。
【输出要求】
(1)对每一组C开头的测试,检查C1和C2间是否可以传输文件,若可以,则在一行中输出“yes”,否则输出“no”。
(2)当读到S时,检查整个网络。若网络中任意两台机器间都可以传输文件,则是在一行中输出“The network is connected”,否则输出“There are k components。”,其中k是网络中连通集的个数。