比赛 |
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;
}