POJ-1986-Distance Queries
来源:互联网 发布:淘宝美工私活 编辑:程序博客网 时间:2024/06/05 09:16
这个题其实就是LCA的模板题。
代码:
#include<cstdio>#include<cstring>#include<iostream>#include<vector>using namespace std;const int maxn=1e5;const int maxm=5e5;int e,head[maxn],nxt[maxm],pnt[maxm],cost[maxm],p[maxn],dist[maxn];int n,m,k,ans[maxn];vector<pair<int,int> > query[maxn];bool vis[maxn];void AddEdge(int u,int v,int c){ pnt[e]=v;nxt[e]=head[u];cost[e]=c;head[u]=e++;}void Init(){ for(int i=1;i<=n;i++) query[i].clear();}int find(int x){ if(p[x]==x) return x; return p[x]=find(p[x]);}void LCA(int u,int fa){ p[u]=u; for(int i=head[u];i!=-1;i=nxt[i]) { if(pnt[i]==fa) continue; dist[pnt[i]]=dist[u]+cost[i]; LCA(pnt[i],u); p[pnt[i]]=u; } vis[u]=1; for(int i=0;i<query[u].size();i++) { int v=query[u][i].first; if(vis[v]) ans[query[u][i].second]=dist[u]+dist[v]-2*dist[find(v)]; }}int main(){ while(scanf("%d%d",&n,&m)!=EOF) { Init(); e=0; memset(head,-1,sizeof(head)); for(int i=0;i<m;i++) { int u,v,c; char str[5]; scanf("%d%d%d%s",&u,&v,&c,str); AddEdge(u,v,c); AddEdge(v,u,c); } scanf("%d",&k); for(int i=0;i<k;i++) { int u,v; scanf("%d%d",&u,&v); query[u].push_back(make_pair(v,i)); query[v].push_back(make_pair(u,i)); } LCA(1,-1); for(int i=0;i<k;i++) printf("%d\n",ans[i]); } return 0;}
0 0
- POJ 1986 Distance Queries
- POJ 1986 Distance Queries
- poj 1986 Distance Queries
- POJ 1986 Distance Queries
- poj 1986 Distance Queries
- POJ-1986-Distance Queries
- poj 1986 Distance Queries
- POJ 1986 Distance Queries
- POJ 1986 Distance Queries
- POJ 1986 Distance Queries [LCA]
- poj 1986 Distance Queries LCA
- POJ 1986 Distance Queries(LCA)
- poj 1986 Distance Queries (LCA)
- POJ 1986 Distance Queries LCA
- [POJ 1986] Distance Queries (LCA)
- Distance Queries - POJ 1986 LCA
- poj 1986 Distance Queries(LCA)
- POJ 1986 — Distance Queries
- Unity3d 动画会出现的小问题
- HTTP-安全
- Pascal's Triangle Java
- Access denied for user 'root'@'127.0.0.1' (using password: YES)
- javascript 查看 json 字符串内容
- POJ-1986-Distance Queries
- JAVA开发者最常去的20个英文网站
- Ubuntu14.04下源码编译安装Subversion1.8.10
- SQL Server 2008 还原数据库
- 智能交通焕发勃勃生机,未来会呈现哪些巨变?
- c++ foreach的使用
- 深入理解Linux内存管理机制
- 使用jqueryUI来制作一个日期选择器
- K中心聚类法