poj3013 邻接表+优先队列+Dij
把我坑到死的题
开始开题以为是全图连通是的最小值 ,以为是最小生成树,然后敲了发现不是,看了下别人的题意,然后懂了;
然后发现数据大,要用邻接表就去学了一下邻接表,然后又去学了下优先队列优化的dij;
这坑爹的题目我交了10几遍,也不知道错在哪里;后来知道了maxint要#define Maxint 10000000000;
然后long int 是过不了的,改成long long才能过 ,真是呵呵啊;
#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std;
#define Maxint 10000000000 struct node
{
long long v;//后面点
long long w;//权
long long next;//记录同一起点的下一条边的位置
}edge[]; long long n,m,index,nodeval[],dis[],vis[]; long long pre[];//开始的顶点 void add(long long x,long long y,long long z)
{
edge[index].v=y;
edge[index].w=z;
edge[index].next=pre[x];
pre[x]=index++; /*edge[index].v=x;
edge[index].w=z;
edge[index].next=pre[y];
pre[y]=index++;*/ } struct Node
{
long long point,dist;
bool operator<(const Node x) const
{
return x.dist<dist;
}
}; void dij(int s)
{
priority_queue<Node> q;
long long i,j;
for(i=;i<=n;i++)
{
dis[i]=Maxint;
}
dis[]=;
Node cur;
cur.point=;
cur.dist=;
q.push(cur);
while(!q.empty())
{
Node tmp;
tmp=q.top();
q.pop();
long int u=tmp.point;
if(vis[u])
continue;
vis[u]=;
for(j=pre[u];j!=-;j=edge[j].next)
{
if(!vis[edge[j].v]&&dis[edge[j].v]>dis[u]+edge[j].w)
{
dis[edge[j].v]=dis[u]+edge[j].w;
cur.dist=dis[edge[j].v];
cur.point=edge[j].v;
q.push(cur);
}
}
}
} int main()
{
int i,j,t;
scanf("%d",&t);
while(t--)
{
scanf("%lld %lld",&n,&m);
for(i=;i<=n;i++)
scanf("%ld",&nodeval[i]);
index=;
memset(vis,,sizeof(vis));
memset(pre,-,sizeof(pre));
for(i=;i<m;i++)
{
long long x,y,z;
scanf("%lld %lld %lld",&x,&y,&z);
if(x==y)continue;
add(x,y,z);
add(y,x,z);
}
dij();
long long ans=,flag=;
for(i=;i<=n;i++)
{
if(dis[i]==Maxint)
{
flag=;break;
}
ans+=(dis[i]*nodeval[i]);
}
if(flag)printf("No Answer\n");
else printf("%lld\n",ans);
}
}
poj3013 邻接表+优先队列+Dij的更多相关文章
- HDU 1535 Invitation Cards(逆向思维+邻接表+优先队列的Dijkstra算法)
		
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1535 Problem Description In the age of television, n ...
 - NBOJv2——Problem 1037: Wormhole(map邻接表+优先队列SPFA)
		
Problem 1037: Wormhole Time Limits: 5000 MS Memory Limits: 200000 KB 64-bit interger IO format: ...
 - Prime邻接表+优先队列
		
#include <iostream> #include <cmath> #include <cstring> #include <cstdlib> # ...
 - Genealogical tree(拓扑结构+邻接表+优先队列)
		
Genealogical tree Time Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other) ...
 - HDU 2544 最短路(邻接表+优先队列+dijstra优化模版)
		
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
 - 基于STL优先队列和邻接表的dijkstra算法
		
首先说下STL优先队列的局限性,那就是只提供入队.出队.取得队首元素的值的功能,而dijkstra算法的堆优化需要能够随机访问队列中某个节点(来更新源点节点的最短距离). 看似可以用vector配合m ...
 - 06-图1 列出连通集   (25分)(C语言邻接表实现)
		
题目地址:https://pta.patest.cn/pta/test/558/exam/4/question/9495 由于边数E<(n*(n-1))/2 所以我选用了邻接表实现,优先队列用循 ...
 - SDUT2142数据结构实验之图论二:基于邻接表的广度优先搜索遍历
		
http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2142&cid=1186 题目描述 给定一个无向连通图,顶点编号从0到n-1,用广度优先搜 ...
 - Invitation Cards(邻接表+逆向建图+SPFA)
		
Time Limit: 8000MS Memory Limit: 262144K Total Submissions: 17538 Accepted: 5721 Description In ...
 
随机推荐
- 在Eclipse彻底删除一个项目
			
1. 先必须关闭项目 2. 再从workspace中把项目删除
 - 使用NIFTI指令画nii图像
			
❤ 关于几种显示工具 mricro:显示出来的左右脑是反着的: mricroN,SPM,xjview,BrainNetViewer:显示出的左右脑是正确的,并且对于做过仿射变换的图像可以自动识别并且校 ...
 - 《Node.js开发实战详解》学习笔记
			
<Node.js开发实战详解>学习笔记 ——持续更新中 一.NodeJS设计模式 1 . 单例模式 顾名思义,单例就是保证一个类只有一个实例,实现的方法是,先判断实例是否存在,如果存在则直 ...
 - 两步验证Authy时间同步问题
			
Authy是我常用的软件之一,通常用于Google的两步验证,或者是其他基于Google两步验证的原理的衍生程序.比如Namesilo.印象笔记等均有使用. 先说说什么是两步验证. 两步验证 两步验证 ...
 - DefaultFilesMiddleware中间件如何显示默认页面
			
DefaultFilesMiddleware中间件如何显示默认页面 DefaultFilesMiddleware中间件的目的在于将目标目录下的默认文件作为响应内容.我们知道,如果直接请求的就是这个默认 ...
 - QT QDateTime类、QTimer类
			
QDateTime类,头文件#include <QDateTime> 可以使用QDateTime类来获得系统时间.通过QDateTime::currentDateTime()来获取本地系统 ...
 - 分享我对领域驱动设计(DDD)的学习成果
			
本文内容提要: 1. 领域驱动设计之领域模型 2. 为什么建立一个领域模型是重要的 3. 领域通用语言(Ubiquitous Language) 4.将领域模型转换为代码实现的最佳实践 5. 领域建模 ...
 - hadoop 2.6全分布安装
			
环境:centos 6.6 + hadoop2.6 虚拟机:(vmware fusion 7.0.0) 虚拟机hostname / IP地址 master / 192.168.187. ...
 - Caffe学习系列(3):视觉层(Vision Layers)及参数
			
所有的层都具有的参数,如name, type, bottom, top和transform_param请参看我的前一篇文章:Caffe学习系列(2):数据层及参数 本文只讲解视觉层(Vision La ...
 - warning: #870-D: invalid multibyte character sequence
			
warning: #870-D: invalid multibyte character sequence2011-03-12 9:18warning: #870-D: invalid multiby ...