摘要: 题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=33804、思路:和poj的一道题有点像,不过这道题图可能不连通,因此首先求边双连通分量,然后算每个连通分量的度数,显然叶子节点的度数为1,孤立点的度数为0,然后就是统计度数了,对于孤立点ans+=2,对于叶子节点,ans++。于是最后的答案就是(ans+1)/2了。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #de... 阅读全文
posted @ 2013-09-20 22:22 ihge2k 阅读(513) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=28972思路:spfa求出每个点到其余顶点的最短路(最短路上的每个点的val都小于等于起点的val),然后又二维数组dp来保存,最后询问的时候就是枚举中间点i了,min{dp[i][u]+dp[i][v]+cost[i]}; 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define inf 1 >g;17 int cos 阅读全文
posted @ 2013-09-20 19:26 ihge2k 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=36707思路:根据题意拆点建图即可。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define MAXN 2222 8 #define inf 1que; 38 que.push(vt); 39 while(!que.empty()){ 40 int u=que.front(); 41 ... 阅读全文
posted @ 2013-09-20 16:38 ihge2k 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4640思路:f[i][j]表示一个人状态i下走到j的最小花费,dp[i][j]表示i个人在状态j下的最下花费。首先我们可以一遍bfs求出f[i][j],然后通过f[i][j]得到dp[1][i],最后就是更新dp[i][j]了。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define inf 1PP; 9 10 int map[20][20];11 int f[1que;19 .. 阅读全文
posted @ 2013-09-20 14:31 ihge2k 阅读(362) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1430思路:由于只是8种颜色,所以标号就无所谓了,对起始状态重新修改标号为 12345678,对目标状态标号做相应的修改,先预处理出12345678到所有状态的路径,记录所有状态的pre值,直接输出即可。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 9 struct Node{ 10 char str[11]; 11 Node(... 阅读全文
posted @ 2013-09-20 11:01 ihge2k 阅读(970) 评论(0) 推荐(0) 编辑