zoukankan      html  css  js  c++  java
  • nyist 510昂贵的聘礼

    /*
    好好的图论题啊,最短路的应用,dijkstra算法 
    */
    #include <iostream>
    using namespace std;
    const int INF=100000;
    int a[105][105],b[105],c[105],s[105],dist[105];
    int n,m;
    int dj(int p,int q)
    {
    	int i,j,r,t,k=0;
    	for(i=0;i<n;i++)
    	if((b[i]>=p&&b[i]<=q)) dist[i]=a[k][i], s[i]=0; else dist[i]=INF,s[i]=0;
    	dist[0]=0; s[0]=1;
    	for(i=1;i<n;i++)
    	{
    		t=INF;
    		for(j=0;j<n;j++)
    		if(!s[j]&&dist[j]<t) t=dist[j],k=j;
    		s[k]=1;
    		for(j=0;j<n;j++)
    		if(!s[j]&&a[k][j]<INF&&b[j]>=p&&b[j]<=q)
    		{
    			r=dist[k]+a[k][j];
    			if(dist[j]>r) dist[j]=r;
    		}
    	}
    	t=c[0];
    	for(i=0;i<n;i++)
        if(dist[i]+c[i]<t) t=dist[i]+c[i];
    		return t;
    }
    int main(int argc, char *argv[])
    {
    	int i,j,k,p,q,l,r;
    	while(cin>>m>>n&&(m||n))
    	{
    		for(i=0;i<n;i++)
    		for(j=0;j<n;j++)
    		a[i][j]=INF;
    	for(i=0;i<n;i++)
    	{
    		
    		cin>>c[i]>>b[i]>>k;
    	    for(j=0;j<k;j++)
    	    {
    	    cin>>p>>q;
    	    a[i][p-1]=q;
    	    }
    	}
    	r=c[0];
         for(i=b[0]-m;i<=b[0];i++)
         {
    	 k=dj(i,i+m);
    	 if(k<r) r=k;
         }
         cout<<r<<endl;
    	}
    	return 0;
    }        


  • 相关阅读:
    期末总结
    虚拟存储器学习记录
    实验报告
    并发编程学习记录
    进程&信号&管道实践学习记录
    异常控制流学习记录
    系统级IO实践学习记录
    系统级I/O学习记录
    Arduino小车学习与研究
    期中总结
  • 原文地址:https://www.cnblogs.com/james1207/p/3265371.html
Copyright © 2011-2022 走看看