记录编号 |
31867 |
评测结果 |
RRRRRRRRRR |
题目名称 |
查数 |
最终得分 |
0 |
用户昵称 |
wangmengyuan |
是否通过 |
未通过 |
代码语言 |
C++ |
运行时间 |
0.000 s |
提交时间 |
2011-11-04 11:00:05 |
内存使用 |
7.92 MiB |
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
int n,m,w[1001][1001][2];
int a,b,q[1001][2],answer,qi,mo;
bool used[1001]={0};
int ji[1001]={0};
void bfs(int x);
int main()
{
freopen ("pwalk.in","r",stdin);
freopen ("pwalk.out","w",stdout);
scanf("%d%d",&n,&m);
for (int i=0;i<n-1;i++)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
ji[a]++;
ji[b]++;
w[a][ji[a]][0]=b;
w[a][ji[a]][1]=c;
w[b][ji[b]][0]=a;
w[b][ji[b]][1]=c;
}
for (int i=0;i<m;i++)
{
scanf("%d%d",&a,&b);
q[0][0]=a;
q[0][1]=0;
for (int j=0;j<n-1;j++)
{
used[j]=0;
}
if (a==b)
{
cout<<0<<endl;
continue;
}
qi=0;
mo=0;
answer=0;
while (qi<=mo)
{
bfs(qi);
if (answer==1)
break;
qi++;
}
}
return 0;
}
void bfs(int x)
{
for (int i=1;i<=ji[q[x][0]];i++)
{
if (w[q[x][0]][i][0]==b)
{
cout<<q[x][1]+w[q[x][0]][i][1]<<endl;
answer=1;
return;
}
if (used[w[q[x][0]][i][0]])
{
continue;
}
mo++;
q[mo][0]=w[q[x][0]][i][0];
q[mo][1]=q[x][1]+w[q[x][0]][i][1];
used[q[x][0]]=1;
}
}