这题让我第一次感受到了什么叫做在绝望中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+枚举的更多相关文章

  1. hdu3986 spfa + 枚举最短路上的边

    题意: 删除一条边后,求最短路中最长的那个(敌人搞破坏). 思路: 如果你是敌人你肯定删除最短路上的边,删除别的边最短路的值是不会变的,所以直接枚举最短路上的边去删除,取得最大的就行了... #inc ...

  2. Codeforces Round #103 (Div. 2) D. Missile Silos(spfa + 枚举边)

    题目链接:http://codeforces.com/problemset/problem/144/D 思路:首先spfa求出中心点S到其余每个顶点的距离,统计各顶点到中心点的距离为L的点,然后就是要 ...

  3. BZOJ-1880 Elaxia的路线 SPFA+枚举

    1880: [Sdoi2009]Elaxia的路线 Time Limit: 4 Sec Memory Limit: 64 MB Submit: 921 Solved: 354 [Submit][Sta ...

  4. 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 ...

  5. CodeForces 666B World Tour(spfa+枚举)

    B. World Tour time limit per test 5 seconds memory limit per test 512 megabytes input standard input ...

  6. 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 ...

  7. POJ1125 Stockbroker Grapevine(spfa枚举)

    Description Stockbrokers are known to overreact to rumours. You have been contracted to develop a me ...

  8. 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 ...

  9. POJ1062 昂贵的聘礼(带限制的spfa)

    Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低 ...

随机推荐

  1. 谷歌开源项目Google Preview Image Extractor(PIEX) (附上完整demo代码)

    前天偶然看到谷歌开源项目中有一个近乎无人问津的项目Google Preview Image Extractor(PIEX) . 项目地址: https://github.com/google/piex ...

  2. POJ 2253 Frogger -- 最短路变形

    这题的坑点在POJ输出double不能用%.lf而要用%.f...真是神坑. 题意:给出一个无向图,求节点1到2之间的最大边的边权的最小值. 算法:Dijkstra 题目每次选择权值最小的边进行延伸访 ...

  3. web安全测试工具的局限性

    讨论安全漏洞的原理,谈谈工具的局限. 先说下扫描工具的原理: 扫描工具可以看做由两部分组成:爬虫+校验机构.爬虫的作用是搜集整个被采集对象的链接,然后校验机构对这些链接逐一进行验证. 说扫描工具的局限 ...

  4. Android 手势识别类 ( 一 ) GestureDetector 基本介绍

    为了加强鼠标响应事件,Android提供了GestureDetector手势识别类.通过GestureDetector.OnGestureListener来获取当前被触发的操作手势(Single Ta ...

  5. AFN框架基本使用

    0.AFN框架基本使用 0.1 AFN内部结构 AFN结构体 - NSURLConnection + AFURLConnectionOperation(已经被废弃) + AFHTTPRequestOp ...

  6. WMI入门

    转:http://www.cnblogs.com/ceachy/archive/2013/03/21/WMI_What.html WMI入门(一):什么是WMI WMI出现至今已经二十多年了,但很多人 ...

  7. Android开发eclipse运行程序时报timeout的解决方法

    eclipse开发Android程序时,忽然莫名其妙报这个错,之前还好好的.忽然就不行了. Failed to install xxx.apk on device~~~: timeout 尝试过手机里 ...

  8. ndk开发教程以及问题解决方案

    一.NDK产生的背景 Android平台从诞生起,就已经支持C.C++开发.众所周知,Android的SDK基于Java实现,这意味着基于Android SDK进行开发的第三方应用都必须使用Java语 ...

  9. JNI 程序开发

    参考资料: http://blog.csdn.net/wwj_748/article/details/28136061 JNI_最简单的Java调用C/C++代码 http://blog.csdn.n ...

  10. char,string和CString转换

    &1 string->char string str0 = "sophia is a good girl."; const char *str1 = str0.c_s ...