zoukankan      html  css  js  c++  java
  • poj1426

    传送门

    转:http://blog.csdn.net/wangjian8006/article/details/7460523

    (比较好的记录路径方案)

      1 #include<iostream>
      2 #include<cstring>
      3 #include<cstdlib>
      4 #include<cstdio>
      5 #include<algorithm>
      6 #include<cmath>
      7 #include<queue>
      8 #include<map>
      9 #include<set>
     10 #include<stack>
     11 #include<string>
     12 
     13 #define N 1000005
     14 #define M 9
     15 #define mod 1000000007
     16 //#define p 10000007
     17 #define mod2 1000000000
     18 #define ll long long
     19 #define LL long long
     20 #define eps 1e-6
     21 #define inf 1000000
     22 #define maxi(a,b) (a)>(b)? (a) : (b)
     23 #define mini(a,b) (a)<(b)? (a) : (b)
     24 
     25 using namespace std;
     26 
     27 int n;
     28 typedef struct
     29 {
     30     int v;
     31     int yu;
     32     int num;
     33     int pre;
     34 }PP;
     35 
     36 int tot;
     37 int vis[1005];
     38 PP ans[N];
     39 
     40 void ini()
     41 {
     42     tot=0;
     43     memset(vis,0,sizeof(vis));
     44 }
     45 
     46 void out(int now)
     47 {
     48    // for(int i=0;i<=1;i++)
     49     //printf(" v=%d pre=%d
    ",ans[i].v,ans[i].pre);
     50     //printf(" now=%d v=%d pre=%d
    ",now,ans[now].v,ans[now].pre);
     51     if(ans[now].pre!=-1){
     52 
     53         out(ans[now].pre);
     54 
     55     }
     56     printf("%d",ans[now].v);
     57 }
     58 
     59 void bfs()
     60 {
     61     queue<PP>q;
     62     PP te,nt;
     63     te.v=1;
     64     te.pre=-1;
     65     te.num=0;
     66     te.yu=1%n;
     67     ans[0].v=1;
     68     ans[0].pre=-1;
     69     tot=1;
     70     vis[1]=1;
     71     q.push(te);
     72 
     73     while(q.size()>=1)
     74     {
     75 
     76         te=q.front();
     77         q.pop();
     78        // printf(" v=%d yu=%d num=%d pre=%d
    ",te.v,te.yu,te.num,ans[te.num].pre);
     79         if(te.yu==0){
     80             //printf(" num=%d
    ",te.num);
     81             out(te.num);
     82             printf("
    ");
     83             return;
     84         }
     85         nt.pre=te.num;
     86         nt.yu=(te.yu*10)%n;
     87         if(vis[nt.yu]==0){
     88             vis[nt.yu]=1;
     89             nt.num=tot;
     90             ans[tot].v=0;
     91             ans[tot].pre=te.num;
     92             tot++;
     93 
     94             nt.v=0;
     95             q.push(nt);
     96         }
     97         nt.yu=(te.yu*10+1)%n;
     98         if(vis[nt.yu]==0){
     99             vis[nt.yu]=1;
    100             nt.num=tot;
    101             ans[tot].v=1;
    102             ans[tot].pre=te.num;
    103             tot++;
    104             nt.v=1;
    105             q.push(nt);
    106         }
    107     }
    108 }
    109 
    110 void solve()
    111 {
    112     bfs();
    113 }
    114 
    115 int main()
    116 {
    117     //freopen("data.in","r",stdin);
    118    // freopen("data.out","w",stdout);
    119     //scanf("%d",&T);
    120     //for(int ccnt=1;ccnt<=T;ccnt++)
    121     //while(T--)
    122     while(scanf("%d",&n)!=EOF)
    123     {
    124         if(n==0) break;
    125         ini();
    126         solve();
    127 //        out();
    128     }
    129 
    130     return 0;
    131 }
  • 相关阅读:
    document.form.action一个页面多个action,表单分向提交
    jdk多个版本切换
    (已解决)No result defined for action and result input
    struts2中action中的void方法
    时间格式yy-MM-dd HH:mm:ss
    Spring在Action中不用注入实体类
    css背景色的线性渐变
    ElasticSearch入门
    Git命令进阶
    websocket入门代码
  • 原文地址:https://www.cnblogs.com/njczy2010/p/4242518.html
Copyright © 2011-2022 走看看