HDU 4318 Power transmission

九野的博客,转载请注明出处:http://blog.csdn.net/acmmmm/article/details/11819419

题意:给定n个点,下面n行

i行:

k表示i点连接的边数

i连接的点 边权值

最后一行 起点 终点 输入起点电量

求一条最短路

dij裸题,注意边排序。

用spfa可以防止边排序错误的dij无限TL

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define N 50500
#define M 50500*50
#define inf 1000000000000
#define ll int
using namespace std;
inline ll Max(ll a,ll b){return a>b?a:b;}
inline ll Min(ll a,ll b){return a q;
	q.push(quedge(s,0));//点和已损失率
	while(!q.empty()){
		quedge temp=q.top(); q.pop();
		int u=temp.p; double pow=temp.d;
		for(int i=head[u];i!=-1;i=edge[i].nex){
			int v=edge[i].t;
			if(dis[v]>pow+(1-pow)*edge[i].w)
			{
				dis[v]=pow+(1-pow)*edge[i].w;
				if(v!=t)
				q.push(quedge(v,dis[v]));
			}
		}

	}

}
int main(){
	ll i,j,k;
	while(~scanf("%d",&n))
	{
		init();	
		dij();
		printf("%.2lf\n",dis[t]*all);
	}
	return 0;
}

你可能感兴趣的:(水题,最短路)