zoukankan      html  css  js  c++  java
  • POJ 1041 John's trip Euler欧拉回路判定和求回路

    就是欧拉判定,判定之后就能够使用DFS求欧拉回路了。图论内容。

    这里使用邻接矩阵会快非常多速度。

    这类题目都是十分困难的。光是定义的记录的数组变量就会是一大堆。


    #include <cstdio>
    #include <cstring>
    #include <stack>
    #include <vector>
    using namespace std;
    
    struct Edge
    {
    	int ed, des;
    	Edge(int e = 0, int d = 0) : ed(e), des(d) {}
    };
    const int EDGES = 2000;//1996;
    const int VEC = 45;
    stack<int> stk;
    int degree[VEC];
    vector<Edge> gra[VEC];
    bool vis[EDGES];
    
    void euler(int u)
    {
    	for(int i = 0; i < (int)gra[u].size(); i++)
    	{
    		if(!vis[gra[u][i].ed])	//标志訪问过了,这里须要表示桥,不是顶点
    		{
    			vis[gra[u][i].ed] = true;
    			euler(gra[u][i].des);
    			stk.push(gra[u][i].ed);
    			//不能break
    		}
    	}
    }
    
    int main()
    {
    	int x, y, z, one;	
    	while (scanf("%d %d", &x, &y) != EOF && x && y)
    	{
    		memset(vis, 0, sizeof(vis));
    		memset(degree, 0, sizeof(degree));
    		for (int i = 1; i < VEC; i++)
    			gra[i].clear();
    
    		scanf("%d", &z);
    		one = min(x, y);
    		degree[x]++; degree[y]++;
    		gra[x].push_back(Edge(z, y)); gra[y].push_back(Edge(z, x));
    		while (scanf("%d %d", &x, &y) != EOF && x && y)
    		{
    			scanf("%d", &z);
    			gra[x].push_back(Edge(z, y)); gra[y].push_back(Edge(z, x));
    			degree[x]++, degree[y]++;
    		}
    		for (int i = 1; i < VEC; i++)
    		{
    			if (degree[i] & 1)
    			{
    				puts("Round trip does not exist.");
    				goto endLoop;	//玩玩goto
    			}
    		}
    		
    		euler(one);
    		while (!stk.empty())
    		{
    			printf("%d ", stk.top());
    			stk.pop();
    		}
    		putchar('
    ');
    
    		endLoop:;
    	}
    	return 0;
    }



  • 相关阅读:
    产生随机不重复ID
    .NET 中使用 SQlite 数据库_1.新数据库的创建
    WCF 服务IIS部署 SvcUtil.exe 工具文件地址 及 生成代理类命令
    查看进程占用各字段含义
    内存溢出
    Python 正则表达式使用问题集锦
    Ninja编译过程分析
    git 命令使用集锦
    使用aapt查看当前apk的属性
    Android PowerManager电源管理(Android N )
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/6735934.html
Copyright © 2011-2022 走看看