把我坑到死的题

开始开题以为是全图连通是的最小值 ,以为是最小生成树,然后敲了发现不是,看了下别人的题意,然后懂了;

然后发现数据大,要用邻接表就去学了一下邻接表,然后又去学了下优先队列优化的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的更多相关文章

  1. HDU 1535 Invitation Cards(逆向思维+邻接表+优先队列的Dijkstra算法)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1535 Problem Description In the age of television, n ...

  2. NBOJv2——Problem 1037: Wormhole(map邻接表+优先队列SPFA)

    Problem 1037: Wormhole Time Limits:  5000 MS   Memory Limits:  200000 KB 64-bit interger IO format: ...

  3. Prime邻接表+优先队列

    #include <iostream> #include <cmath> #include <cstring> #include <cstdlib> # ...

  4. Genealogical tree(拓扑结构+邻接表+优先队列)

    Genealogical tree Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 131072/65536K (Java/Other) ...

  5. HDU 2544 最短路(邻接表+优先队列+dijstra优化模版)

    最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  6. 基于STL优先队列和邻接表的dijkstra算法

    首先说下STL优先队列的局限性,那就是只提供入队.出队.取得队首元素的值的功能,而dijkstra算法的堆优化需要能够随机访问队列中某个节点(来更新源点节点的最短距离). 看似可以用vector配合m ...

  7. 06-图1 列出连通集 (25分)(C语言邻接表实现)

    题目地址:https://pta.patest.cn/pta/test/558/exam/4/question/9495 由于边数E<(n*(n-1))/2 所以我选用了邻接表实现,优先队列用循 ...

  8. SDUT2142数据结构实验之图论二:基于邻接表的广度优先搜索遍历

    http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2142&cid=1186 题目描述 给定一个无向连通图,顶点编号从0到n-1,用广度优先搜 ...

  9. Invitation Cards(邻接表+逆向建图+SPFA)

    Time Limit: 8000MS   Memory Limit: 262144K Total Submissions: 17538   Accepted: 5721 Description In ...

随机推荐

  1. NOIP2003传染病控制[按层DFS]

    题目背景 近来,一种新的传染病肆虐全球.蓬莱国也发现了零星感染者,为防止该病在蓬莱国大范围流行,该国政府决定不惜一切代价控制传染病的蔓延.不幸的是,由于人们尚未完全认识这种传染病,难以准确判别病毒携带 ...

  2. save(),saveorupdate()还有marqe()

    所有这三个方法,也就是save().saveOrUpdate()和persist()都是用于将对象保存到数据库中的方法,但其中有些细微的差别.例如,save()只能INSERT记录,但是saveOrU ...

  3. java 22 - 4 多线程的代码实现的方式1

    需求:我们要实现多线程的程序. 如何实现呢? 由于线程是依赖进程而存在的,所以我们应该先创建一个进程出来. 而进程是由系统创建的,所以我们应该去调用系统功能创建一个进程. Java是不能直接调用系统功 ...

  4. git生成ssh key 避免每次push都要输入账号密码

    第一步:生成public/private rsa key pair在命令行中输入ssh-keygen -t rsa -C "your_email@example.com" 默认在这 ...

  5. ubuntu下nginx+php5的部署

    ubuntu下nginx+php5环境的部署和centos系统下的部署稍有不同,废话不多说,以下为操作记录:1)nginx安装root@ubuntutest01-KVM:~# sudo apt-get ...

  6. C# winform生成天气预报(转)

    原文地址 http://www.cnblogs.com/ChowYy/p/3382216.html?utm_source=tuicool&utm_medium=referral 项目需要,然后 ...

  7. 清北学堂2017NOIP冬令营入学测试P4745 B’s problem(b)

    清北学堂2017NOIP冬令营入学测试 P4745 B's problem(b) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试 描述 题目描 ...

  8. css一些记录

    比如右侧链接:更多   ,定义此span float:right ,但是 更多 要写在 短标题的左边  比如:<span>更多</span> <font>这是短标题 ...

  9. mac 10.9.4下配置apache

    mac 10.9.x已经自带了apache,可按如下步骤开启: 1.启动 sudo apachectl start 启动后,访问 http://localhost/ 应该能看到"It wor ...

  10. mac下环境变量、maven3.1.1 及 jdk1.7.0.45配置

    一.设置环境变量 1.打开终端,输入 cd ~ 2.输入 touch .bash_profile (如果该文件不存在,将创建一个空文件) 3.输入 open .bash_profile (调用记事本编 ...