摘要: 解题思路:题目意思是找到判断是不是连通无环的图,首先想到的就是并查集。 1》判断成环的时候,只要判断输入边的两个点。有一个共同的父节点,那么这两个点就成环。 2》判断连通的时候,只要判断根节点数为1即可。 注意:当输入的这组数据只有 0 0 时,依然是满足条件的,即应输出 "Yes"。View Code 1#include<iostream>2usingnamespacestd;3#defineMAX1000054intfather[MAX],flag,sign[MAX];56intFindSet(intx)7{8while(x!=father[x])9x=fa 阅读全文
posted @ 2012-02-18 21:10 笑巧 阅读(3981) 评论(0) 推荐(1) 编辑
摘要: 解题思路:题意明确,其实是最小生成树的一种变形,可以在读取输入时将已经建设的道路的费用看做是0,然后直接寻找最小生成树,得到生成树的耗费就是最短耗费。另外注意:用cin、cout输入输出则会超时,本来以为数据量不会太大,但改用scanf和printf后就AC了。 View Code 1#include<stdio.h>2#defineMAX0xfffffff3#definemax10545intmap[max][max],sign[max];6intmain()7{8intn,a,b,c,d,i,j;9while(scanf("%d",&n)&& 阅读全文
posted @ 2012-02-18 19:31 笑巧 阅读(696) 评论(0) 推荐(0) 编辑
摘要: 解题思路:题意很明确,就是求起点到终点的最短路,如果存在则输出该距离,否则输出 "-1"。求单源点的最短路径问题,我选用迪杰斯特拉算法,以前用过,所以比较熟悉。可这道题需要注意的地方很多,比如在输入时两个城镇之间可以有多条路,所以必须选择最短的一条;另外,在初始化时,城镇到自身的距离应该0,开始我一直初始化为最大值,在这里栽了很大跟头。以后会注意的。View Code 1#include<iostream>2usingnamespacestd;3#defineMAX0xfffffff4#definemax2055intmap[max][max],sign[max 阅读全文
posted @ 2012-02-18 10:38 笑巧 阅读(937) 评论(2) 推荐(0) 编辑