CSU 1960:单源最大权路径 (DFS)
2017-07-28 16:48
405 查看
单源最大权路径
Time limit:10000 ms Memory limit:262144 kB OS:LinuxProblem Description
有一棵由N个结点构成的树,每一条边上都有其对应的权值。现在给定起点,求从该点出发的一条路径(至少有一条边)使得这条路径上的权值之和最大,并输出这个最大值。Input
第一行一个正整数T,代表数据组数。每组数据第一行两个正整数n(2<=n<=10^5),s(1<=s<=n),分别表示树结点数目以及给定的起点,点的编号从1至N。接下来M行,每行三个整数x,y,z,(1<=x,y<=n,|z|<=1000),代表编号为x和y的点之间有一条权值为z的双向边。Output
每组数据输出一行,即所找到路径的最大权值(格式参见样例)。Sample Input
23 1
1 2 10
1 3 5
5 5
1 5 70
4 3 100
5 3 -10
2 5 60
Sample Output
Case #1: 10Case #2: 90
解题思路:
题目并不难,这次主要是练习用邻接链表来存图。看着石文斌大佬的代码敲的,居然一次就过了美滋滋~Code:
#include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #define mem(a,b); memset(a,b,sizeof(a)) using namespace std; const int maxn=1e5+5; //第一次写邻接链表 struct EDG { int u; int v; int w; //初始化列表,还没彻底搞明白,只知道怎么用 EDG(int uu=0,int vv=0,int ww=0):u(uu),v(vv),w(ww){} }e[maxn]; int first[maxn],nxt[maxn*2]; int vis[maxn]; int len=1,ans; void mk_edg(int u,int v,int w) { //头插 e[++len]=EDG(u,v,w); nxt[len]=first[u]; first[u]=len; e[++len]=EDG(v,u,w); nxt[len]=first[v]; first[v]=len; } void DFS(int u,int sum) { if(ans<sum) ans=sum; vis[u]=1; for(int i=first[u];i;i=nxt[i]) { if(!vis[e[i].v]) DFS(e[i].v,sum+e[i].w); } } int main() { int T; scanf("%d",&T); for(int ca=1;ca<=T;ca++) { mem(e,0) mem(first,0); mem(nxt,0); mem(vis,0); len=1,ans=0; int n,s; scanf("%d%d",&n,&s); for(int i=1;i<n;i++) { int u,v,w; scanf("%d%d%d",&u,&v,&w); mk_edg(u,v,w); } DFS(s,0); printf("Case #%d: %d\n",ca,ans); } return 0; }
相关文章推荐
- CSU-ACM2017暑期训练4-dfs D - 单源最大权路径 CSU - 1960
- (CSU - 1960)单源最大权路径
- LeetCode-Binary Tree Maximum Path Sum-二叉树最大路径和-DFS
- 单源最大权路径<DFS>
- leetcode 124. Binary Tree Maximum Path Sum 最大路径和 + DFS深度优先搜索
- LeetCode Binary Tree Maximum Path Sum 二叉树最大路径和(DFS)
- COJ1960-单源最大权路径
- Uvalive 4267 Finding The Heaviest Path (Regionals 2008 Asia Taipei +DFS结点最大权值路径)
- node.js与C语言 实现遍历文件夹下最大的文件,并输出路径,大小
- 动态规划之最大矩阵路径
- 矩阵中的路径(DFS)
- POJ-2965(DFS路径输出)
- NYOJ99单词拼接(欧拉通路回路,dfs打印路径)
- 彻底搞定二分图的匈牙利算法,最大匹配数(最小覆盖数)、最大独立数、最小路径覆盖
- PAT (Advanced Level) 1018. Public Bike Management (30) 杭州自行车 最短路径+DFS
- csu 1307 最大值最小,
- POJ 2488 A Knight's Journey(dfs + 打印路径)
- 二叉树中最大路径和
- 二分图最大匹配,点的最小覆盖,最小路径覆盖
- 九度oj 题目1008:最短路径问题 【ZJU2010考研机试题4】【dij+dfs】