#include"stdio.h"
#include"string.h"
#include"iostream"
#include"queue"
#define M 111111
using namespace std;
struct st
{
int u,v,next,w;
}edge[M*2];
int rank[M],head[M],t,pre[M],use[M],dis[M];
void init()
{
t=0;
memset(head,-1,sizeof(head));
}
void add(int a,int b,int w)
{
edge[t].u=a;
edge[t].v=b;
edge[t].w=w;
edge[t].next=head[a];
head[a]=t++;
}
void bfs(int s)
{
queue<int>q;
memset(use,0,sizeof(use));
memset(rank,0,sizeof(rank));
use[s]=1;
q.push(s);
while(!q.empty())
{
int u=q.front();
q.pop();
for(int i=head[u];i!=-1;i=edge[i].next)
{
int v=edge[i].v;
if(!use[v])
{
use[v]=1;
rank[v]=rank[u]+1;
pre[v]=u;
dis[v]=edge[i].w;
q.push(v);
}
}
}
}//用bfs对点进行分层
int targan(int a,int b)
{
int sum=0;
while(a!=b)
{
if(rank[a]>rank[b])
{
sum+=dis[a];
a=pre[a];
}
else
{
sum+=dis[b];
b=pre[b];
}
}
return sum;
}//查找
/*int targan(int a,int b)
{
    if(a==b)
        return a;
    else if(rank[a]>rank[b])
        return targan(pre[a],b);
    else
        return targan(a,pre[b]);
}*/深搜写法
int main()
{
int n,m,a,i,b,c;
while(scanf("%d%d",&n,&m)!=-1)
{
init();
while(m--)
{
scanf("%d%d%d",&a,&b,&c);
add(a,b,c);
add(b,a,c);
}
bfs(1);
for(i=1;i<=n;i++)
printf("%d ",rank[i]);
while(scanf("%d%d",&a,&b)!=-1)
{
int ans=targan(a,b);
printf("%d\n",ans);
}
}
}

最新文章

  1. 【代码笔记】iOS-字符串的分割
  2. CentOS 7.2 安装配置Samba服务器
  3. sorttable
  4. oracle--创建表空间、用户名、密码
  5. nagios&ndash;配置文件
  6. C语言-04函数
  7. 学习window系统下的注册表
  8. pacejs进度条监控服务端数据加载是否完毕
  9. Uva 3708 Graveyard
  10. 区块链之智能合约 solidity踩坑 --上篇
  11. win10蓝屏,windbg的使用
  12. 阿里云上 配置 vsftpd 配置文件 (一个成功例子)
  13. jsp / get 中文乱码问题
  14. protected 与 internal
  15. javascript数据结构与算法--二叉树遍历(先序)
  16. android 虚拟键盘控制
  17. UIScrollView 去掉下面的滚动条
  18. 机器学习第7周-炼数成金-支持向量机SVM
  19. MySQL的索引是什么?怎么优化?
  20. 软件工程 part4 评价3作品 修改

热门文章

  1. 【百度地图API】制作多途经点的线路导航——路线坐标规划
  2. Android开发学习笔记-实现联网检测程序版本
  3. 如何通过Node.js启动cesium
  4. python 源码安装
  5. 品鉴同事发来的炸金花的PHP程序代码
  6. mysql操作类
  7. ios开发之--armv7,armv7s,arm64,i386,x86_64详解
  8. HttpClient(一)-- HelloWorld
  9. Selenium 切换 Frame
  10. 【重要】U3D存放本地游戏存档——不同平台载入XML文件的方法——IOS MAC Android