LA 4593 给一个无向图 让每一条边有方向 使得这个图无环 且最长链最短

#include
#include
#define INF 0x3f3f3f3f
using namespace std;
int dp[1<<15],vis[1<<15],path[1<<15];
char str[160][6];
int dfs(int s)
{
	if(dp[s]!=-1)
	return dp[s];
	int t=(1<<15)-s-1;
	dp[s]=INF;
	for(int i=t;i;i=(i-1)&t)
	{
		if(vis[i])
		continue;
		if(dp[s]>dfs(s+i)+1)
		{
			dp[s]=dp[s+i]+1;
			path[s]=s+i;
		}
	}
	return dp[s];
}
int main()
{
	int n;
	while(~scanf("%d",&n))
    {
    	memset(vis,0,sizeof(vis));
    	for(int i=0;id[b])
			printf("%c %c\n",str[i][0],str[i][1]);
			else
			printf("%c %c\n",str[i][1],str[i][0]);
		}
	}
} 

你可能感兴趣的:(UVA&&LA,动态规划(DP),算法竞赛入门经典训练指南)