Advertisement

1344:【例4-4】最小花费

阅读量:

例4-4

复制代码
 #include <iostream>

    
 using namespace std;
    
 double z,p[2002][2002],dis[2002],maxn;
    
 int n,m,x,y,f[2002],k;
    
 void dijkstra(int x){
    
 	for(int i=1;i<=n;i++) dis[i]=p[x][i];
    
 	dis[x]=1;f[x]=1;
    
 	for(int i=1;i<=n-1;i++){
    
 		maxn=0;
    
 		for(int j=1;j<=n;j++)
    
 			if(f[j]==0 && dis[j]>maxn){
    
 				k=j;maxn=dis[j];
    
 			}
    
 		f[k]=1;
    
 		if(k==y)break;
    
 		for(int j=1;j<=n;j++)
    
 			if(f[j]==0&&dis[k]*p[k][j]>dis[j])
    
 				dis[j]=dis[k]*p[k][j];
    
 	}
    
 }
    
 int main()
    
 {
    
 	cin>>n>>m;
    
 	for(

全部评论 (0)

还没有任何评论哟~