比赛 noip2016普及练习2 评测结果 AWWWWWWW
题目名称 保卫钓鱼岛! 最终得分 12
用户昵称 Lethur 运行时间 0.506 s
代码语言 C++ 内存使用 0.43 MiB
提交时间 2016-11-07 19:56:59
显示代码纯文本
#include<cstdio>
#include<iostream>
#include<vector>
#define MAXN 10001
using namespace std;
typedef unsigned long long ull;
int n,m;
ull ans=0;
ull sum=0;
struct Edge
{
	int to,w;
	Edge(int v,int d):to(v),w(d){}
};
vector<Edge>G[MAXN];
inline void AddEdge(int u,int v,int w)
{
	G[u].push_back(Edge(v,w));
}
inline bool dfs(int cur,int end)
{
	if(cur==end)
	{
		ans++;
		return true;
	}
	if(G[cur].size()==0)
	{
		return false;
	}
	for(int i=0;i<G[cur].size();i++)
	{
		int v=G[cur][i].to;
		int w=G[cur][i].w;
		if(dfs(v,end))
		{
			sum+=w;
		}
	}
	return true;
}
int main()
{
	freopen("diaoyu.in","r",stdin);
	freopen("diaoyu.out","w",stdout);
	cin>>n>>m;
	for(int i=1;i<=n-1;i++)
	{
		int u,v,w;
		cin>>u>>v>>w;
		AddEdge(u,v,w);
	}
	for(int i=1;i<=m;i++)
	{
		int u,v;
		cin>>u>>v;
		if(u==v)
		continue;
		dfs(u,v);
	} 
	cout<<ans<<endl;
	cout<<sum<<endl;
	return 0;
}