zoukankan      html  css  js  c++  java
  • DFS HDOJ 2181 哈密顿绕行世界问题

    题目传送门

    题意:中文题面

    分析:直接排完序后DFS.这样的题以后不应该再写题解的.

    #include <bits/stdc++.h>
    using namespace std;
    
    vector<int> G[21];
    int ans[21];
    int v[3];
    bool vis[21];
    int cnt;
    
    void print()	{
    	printf ("%d:  ", ++cnt);
    	for (int i=0; i<20; ++i)	{
    		printf ("%d ", ans[i]);
    	}
    	printf ("%d
    ", ans[20]);
    }
    
    void DFS(int u, int x, int step)	{
    	for (int i=0; i<G[u].size (); ++i)	{
    		int v = G[u][i];
    		if (v == x)	{
    			if (step < 20)	continue;
    			ans[step] = x;
    			print ();	return ;
    		}
    		else if (vis[v])	continue;
    		vis[v] = true;
    		ans[step] = v;
    		DFS (v, x, step + 1);
    		vis[v] = false;
    	}
    }
    
    int main(void)	{
    	for (int i=1; i<=20; ++i)	{
    		for (int j=0; j<3; ++j)	{
    			scanf ("%d", &v[j]);
    			G[i].push_back (v[j]);
    			//G[v[j]].push_back (i);
    		}
    	}
    	for (int i=1; i<=20; ++i)	{
    		sort (G[i].begin (), G[i].end ());
    	}
    	int m;
    	while (scanf ("%d", &m) == 1)	{
    		if (!m)	break;
    		cnt = 0;
    		memset (vis, false, sizeof (vis));
    		vis[m] = true;
    		ans[0] = m;
    		DFS (m, m, 1);
    	}
    
    	return 0;
    }
    

      

    编译人生,运行世界!
  • 相关阅读:
    利用requests, beautifulsoup包爬取股票信息网站
    Mac自带编码转换工具iconv
    Flask 快速入门
    HTML模版组件
    JavaScript正则表达式及jQuery回顾
    jQuery 教程
    Document
    Document
    Document
    Document
  • 原文地址:https://www.cnblogs.com/Running-Time/p/4982493.html
Copyright © 2011-2022 走看看