hdu3986 spfa+枚举
这题让我第一次感受到了什么叫做在绝望中A题。这题我总共交了18次,TLE不知道几次,WA也不知道几次。
这题不能用dijkstra,用这个我一直超时(我没试过dij+优先队列优化,好像优先队列优化后可以过).。
用了我近一天的时间。。。。。。
#include<stdio.h>
#include<queue>
#include<string.h>
using namespace std;
#define maxn 1002
#define INF 99999999
struct node
{
int from;
int to;
int val;
int flag;//标记该条边能否使用
int next;
}a[*];
int index,head[maxn],pre[maxn],n,m,ret,dis[maxn],vis[maxn],mark[maxn];//mark[]用来保存路径的位置
//pre[]来保存路径
void add(int x,int y,int z)
{
a[index].from=x;
a[index].to=y;
a[index].val=z;
a[index].flag=;//初始都能使用
a[index].next=head[x];
head[x]=index++;
}
void spfa()
{
int i,j,pos;
memset(vis,,sizeof(vis));
queue<int>q;
for(i=;i<=n;i++)
dis[i]=INF;
dis[]=;
vis[]=;
q.push();
while(!q.empty())
{
int cur=q.front();
q.pop();
vis[cur]=;
for(i=head[cur];i!=-;i=a[i].next)
{
int v=a[i].to;
if(a[i].flag&&dis[v]>dis[cur]+a[i].val)//a[].flag标记是否使用
{
if(!ret){//ret表示这是第几次spfa,如果第一次,那要记录路径
pre[v]=cur;//保存当前点的前一个点
mark[v]=i;//保存当前点的位置
}
dis[v]=dis[cur]+a[i].val; if(!vis[v])
{
q.push(v);
vis[v]=;
}
}
}
}
}
int main()
{
int i,j,t,ans;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
index=;
memset(head,-,sizeof(head));
for(i=;i<m;i++)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
add(x,y,z);
add(y,x,z);
}
memset(pre,-,sizeof(pre));
ret=;
spfa();
ret=;
ans=;
for(i=n;i!=-;i=pre[i])
{
a[mark[i]].flag=;//i这里表示点,mark[i]表示点i的位置,a[mark[i]].flag表示点i不能使用
spfa();
if(dis[n]>ans)
{
ans=dis[n];
}
a[mark[i]].flag=;
}
if(ans>=INF)printf("-1\n");
else printf("%d\n",ans);
}
}
hdu3986 spfa+枚举的更多相关文章
- hdu3986 spfa + 枚举最短路上的边
题意: 删除一条边后,求最短路中最长的那个(敌人搞破坏). 思路: 如果你是敌人你肯定删除最短路上的边,删除别的边最短路的值是不会变的,所以直接枚举最短路上的边去删除,取得最大的就行了... #inc ...
- Codeforces Round #103 (Div. 2) D. Missile Silos(spfa + 枚举边)
题目链接:http://codeforces.com/problemset/problem/144/D 思路:首先spfa求出中心点S到其余每个顶点的距离,统计各顶点到中心点的距离为L的点,然后就是要 ...
- BZOJ-1880 Elaxia的路线 SPFA+枚举
1880: [Sdoi2009]Elaxia的路线 Time Limit: 4 Sec Memory Limit: 64 MB Submit: 921 Solved: 354 [Submit][Sta ...
- POJ 1135 Domino Effect (spfa + 枚举)- from lanshui_Yang
Description Did you know that you can use domino bones for other things besides playing Dominoes? Ta ...
- CodeForces 666B World Tour(spfa+枚举)
B. World Tour time limit per test 5 seconds memory limit per test 512 megabytes input standard input ...
- find the longest of the shortest (hdu 1595 SPFA+枚举)
find the longest of the shortest Time Limit: 1000/5000 MS (Java/Others) Memory Limit: 32768/32768 ...
- POJ1125 Stockbroker Grapevine(spfa枚举)
Description Stockbrokers are known to overreact to rumours. You have been contracted to develop a me ...
- HDU - 3499 Flight 双向SPFA+枚举中间边
Flight Recently, Shua Shua had a big quarrel with his GF. He is so upset that he decides to take a t ...
- POJ1062 昂贵的聘礼(带限制的spfa)
Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低 ...
随机推荐
- 最小生成树 2429: [HAOI2006]聪明的猴子
BZOJ 2429: [HAOI2006]聪明的猴子 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 877 Solved: 566[Submit][ ...
- 边工作边刷题:70天一遍leetcode: day 75-1
Shortest Word Distance I/II/III 要点:系列题最重要的是记清题,重点是题目本身的变化和解法之间的关联. I https://repl.it/CqPf 这题的一般规律从左到 ...
- Java虚拟机详解03----常用JVM配置参数
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- 测试 Mono 安装
测试 Mono 安装 为了测试核心编译器(mcs)和运行时(mono),应该创建一个简单的程序并编译它.可以在喜欢的任何文本编辑器中创建程序.这里采用一种快速而简陋的方法创建该文件(虽然没有任何格式化 ...
- java 19 -15 File类批量更改文件名的方法
/* 需求: * 把H:\三国演义下面的视频名称修改为 00?_介绍.avi 思路: A:封装目录 B:获取该目录下所有的文件的File数组 C:遍历该File数组,得到每一个File对象 D:拼接一 ...
- f2fs源码分析之文件读写过程
本篇包括三个部分:1)f2fs 文件表示方法: 2)NAT详细介绍:3)f2fs文件读写过程:4) 下面详细阐述f2fs读写的过程. 管理数据位置关键的数据结构是node,node包括三种:inode ...
- GitLab/Git在AndroidStudio上的使用(转)
1.在AndroidStudio上的配置GitLab 1)首先先将gitlab上的开发项目clone到本地(可以使用命令行或者管理工具,具体操作在GitLab中已经涉及,这里不再赘述),然后导入到An ...
- Eclipse调试按钮消失问题
Window-->Reset Perspective 把Eclipse重置一下,然后 点击红色框圈的向下的箭头,在弹出的菜单里边,点击 show debug toolbar 这个菜单项目,然后奇 ...
- 加密算法使用(二):使用MD5加密字符串(另:byte数组转16进制自动补零方法写法)
public static void main(String args[]) throws NoSuchAlgorithmException { String s = new String(" ...
- 一份高级Java招聘要求
搜了一些招聘,发现自己还有很长的路要走啊,学无止境...... 摘一个典型的招聘要求,如下: 1.5年基于java的项目开发经验,2.熟悉基于 J2EE的相关开源技术以及Spring,Struts2, ...