zoukankan      html  css  js  c++  java
  • poj3311 Hie with the Pie

    poj3311 Hie with the Pie

    题目描述

    共有n+1个点,问从点1出发走完所有点后回到1点所需要的最少时间

    输入输出格式

    输入格式:

    第一行行一个数,n

    接下来n+1行,每行n+1个数,表示从i到j的时间。

    输出格式:

    一个整数,表示最少时间。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int n,a[15][15],f[15][11000];
    int read()
    {
    	int n=0,f=1;char c=getchar();
    	while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
    	while(c>='0'&&c<='9'){n=n*10+c-'0';c=getchar();}
    	return n*f;
    }
    int main()
    {
    	while(1)
    	{
    		n=read();
    		if(n==0)break;
    		n++;
    		for(int i=1;i<=n;++i)
    			for(int j=1;j<=n;++j)
    				a[i][j]=read();
    		for(int k=1;k<=n;++k)
    			for(int i=1;i<=n;++i)
    				for(int j=1;j<=n;++j)
    					a[i][j]=min(a[i][j],a[i][k]+a[k][j]);
    		memset(f,0x3f,sizeof(f));
    		f[1][1]=0;
    		for(int i=1;i<(1<<n);++i)
    			for(int j=1;j<=n;++j)
    				if((i&(1<<(j-1)))!=0)
    					for(int k=1;k<=n;++k)
    						if((i&(1<<(k-1)))==0)f[k][i|(1<<(k-1))]=min(f[k][i|(1<<(k-1))],f[j][i]+a[j][k]);
    		int ans=0x3f3f3f3f;
    		for(int i=2;i<=n;++i)
    			ans=min(ans,f[i][(1<<n)-1]+a[i][1]);
    		printf("%d
    ",ans);
    	}
    	return 0;
    }
    
    
  • 相关阅读:
    说说JSON和JSONP,也许你会豁然开朗,含jQuery用例
    利用CSS3实现页面淡入动画特效
    ajax
    jQuery弹性滑动导航菜单实现思路及代码
    angular 管理后台
    jq简单选项卡
    按钮60秒倒计时
    jq倒计时
    angular ui-route
    flex弹性布局
  • 原文地址:https://www.cnblogs.com/axma/p/10076860.html
Copyright © 2011-2022 走看看