这题让我第一次感受到了什么叫做在绝望中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. TestNG之执行顺序

    如果很有个测试方法,并且这几个方法又有先后顺序,那么如果让TestNG按照自己想要的方法执行呢 一.通过Dependencies 1.在测试类中添加Dependencies @Test public ...

  2. hdu 5800 To My Girlfriend + dp

    传送门:hdu 5800 To My Girlfriend 题意:给定n个物品,其中i,j必选,l,m必不选,问组成体积为s的方法一共有多少种 思路:定义dp[i][j][s1][s2],表示前i种物 ...

  3. [转载]ExtJs4 笔记(7) Ext.tip.ToolTip 提示

    作者:李盼(Lipan)出处:[Lipan] (http://www.cnblogs.com/lipan/)版权声明:本文的版权归作者与博客园共有.转载时须注明本文的详细链接,否则作者将保留追究其法律 ...

  4. [转载]ExtJs4 笔记(8) Ext.slider 滚轴控件、 Ext.ProgressBar 进度条控件、 Ext.Editor 编辑控件

    作者:李盼(Lipan)出处:[Lipan] (http://www.cnblogs.com/lipan/)版权声明:本文的版权归作者与博客园共有.转载时须注明本文的详细链接,否则作者将保留追究其法律 ...

  5. 2016"百度之星"-资格赛

    //本题要求:(Ar*A2...An)%p,亦即[(A1*A2*...An)/(A1*A2*...Ar-1)]%p,由于A1*A2...An乘积过大,无法求得相除所得的结果 //我们需要用到乘法逆元( ...

  6. 第2章 面向对象的设计原则(SOLID):6_开闭原则

    6. 开闭原则(Open Closed Principle,OCP) 6.1 定义 (1)一个类应该对扩展开放,对修改关闭.要求通过扩展来实现变化,而且是在不修改己有的代码情况下进行扩展,也不必改动己 ...

  7. flex4的s:states和mx:states的区别

    http://help.adobe.com/en_US/Flex/4.0/UsingSDK/WS2db454920e96a9e51e63e3d11c0bf63611-7ffa.html#WS43468 ...

  8. Linux安装Redis

    环境:Centos 6.2 redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcached类似,但很大程度补偿了memcached的不足,它支持存储的value ...

  9. Maya FEM节点框架完成

    这几天把物理模拟框架移植到maya之中了. maya编程有一点比较关键,就是要让自己的程序逻辑适应maya的节点求值机制.在物理模拟中,往往需要进行时间积分,对此我的解决办法是,写一个节点rigSim ...

  10. sublime text2 常用快捷键

    1. ctrl+方向键  按单词移动 2. ctrl+shift + 方向键  按单词选取 3. ctrl + F3 查找选定的或光标所在单词 4. F3 查找特定的单词(一般查找的流程是先ctrl+ ...