zoukankan      html  css  js  c++  java
  • POJ 2230

    POJ 2230

    题目大意:给出一副联通无向图,求从起点1开始,每条边走两次,回到起点的的一种路径方案。{SPJ}

    解:我感觉和欧拉回路有点像,然后是分析性质,把每条无向边拆成两条,可以发现,从任意点的欧拉回路都是存在的(奇数乘偶数=偶数>.<), 然后我是用了一种无赖走法,把剩余的点看成一个大点,然后走去这个大点再走回来,进入大点后不断缩小规模。主要的问题是判断点是否走过(度走完)以及边是否走过。

    View Code
     1 //poj 2230
    2 const
    3 maxn=11111;
    4 maxm=51111;
    5 type
    6 data=record
    7 dest, next, op, cost: longint;
    8 end;
    9 var
    10 edge: array[1..maxm*2]of data;
    11 vect, deg: array[1..maxn]of longint;
    12 n, m, tot: longint;
    13 procedure add(x, y: longint);
    14 begin
    15 inc(tot);
    16 with edge[tot] do begin
    17 dest := y;
    18 next := vect[x];
    19 cost := 1;
    20 vect[x] := tot;
    21 op := tot+1;
    22 end;
    23 inc(tot);
    24 with edge[tot] do begin
    25 dest := x;
    26 cost := 1;
    27 next := vect[y];
    28 vect[y] := tot;
    29 op := tot-1;
    30 end;
    31 end;
    32
    33 procedure init;
    34 var
    35 i, j, x, y: longint;
    36 begin
    37 fillchar(vect, sizeof(vect), 0);
    38 fillchar(deg, sizeof(deg), 0);
    39 tot := 0;
    40 readln(n, m);
    41 for i := 1 to m do begin
    42 readln(x, y);
    43 add(x, y);
    44 inc(deg[x], 2); inc(deg[y], 2);
    45 end;
    46 end;
    47
    48 procedure search(x: longint);
    49 var
    50 i, u: longint;
    51 begin
    52 i := vect[x];
    53 while i<>0 do
    54 with edge[i] do begin
    55 if (deg[dest]>0)and(deg[x]>0)and(cost>0) then begin
    56 dec(deg[x], 2);
    57 dec(deg[dest], 2);
    58 cost := 0;
    59 edge[op].cost := 0;
    60 writeln(dest);
    61 search(dest);
    62 writeln(x);
    63 end;
    64 i := next;
    65 end;
    66 end;
    67
    68 procedure main;
    69 begin
    70 writeln(1);
    71 search(1);
    72 end;
    73
    74 begin
    75 assign(input,'1.txt'); reset(input);
    76 init;
    77 main;
    78 end.



  • 相关阅读:
    Goahead 3.1.0 发布,嵌入式 Web 服务器
    jdao 1.0.2 发布,轻量级的orm工具包
    pythonbitstring 3.1.0 发布
    JavaScript 搜索引擎 lunr.js
    Difeye 1.1.4 版本发布
    Chronon 3.5 发布,支持 Java 7
    性能扩展的那些事儿:一味增加硬件并不能解决响应时间问题
    Eclipse SDK 4.2.2/Equinox 3.8.2 发布
    Linux Kernel 3.8.1 发布
    Armadillo C++ Library 3.800 发布
  • 原文地址:https://www.cnblogs.com/wmzisfoolish/p/2435182.html
Copyright © 2011-2022 走看看