• URAL1291. Gear-wheels


    1291

    不知道为嘛被分在DP里了 瞎写 注意没被别的轮带动的情况 初始为0  分母为1

     1 #include <iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<stdlib.h>
     6 #include<vector>
     7 #include<queue>
     8 using namespace std;
     9 #define N 1010
    10 vector<int>ge[N];
    11 int co[N],d[N],vis[N];
    12 struct node
    13 {
    14     int f,nu,de;
    15 }p[N];
    16 int gcd(int a,int b)
    17 {
    18     return b==0?a:gcd(b,a%b);
    19 }
    20 void init(int x,int y)
    21 {
    22     int n1 = co[x]*p[x].nu,n2 = co[y]*p[x].de;
    23     if(n1==0||n2==0) n2=1;
    24     else
    25     {
    26         int k = gcd(n1,n2);
    27         n1 = n1/k;n2 = n2/k;
    28     }
    29     if(d[y]==1)
    30     p[y].f = 1;
    31     else
    32     p[y].f = -1;
    33     p[y].nu = n1;
    34     p[y].de = n2;
    35 }
    36 void bfs(int u)
    37 {
    38     queue<int>q;
    39     q.push(u);
    40     while(!q.empty())
    41     {
    42         int tu = q.front();
    43         q.pop();
    44         for(int i = 0 ; i < (int)ge[tu].size() ; i++)
    45         {
    46             int v = ge[tu][i];
    47             if(!vis[v])
    48             {
    49                 vis[v] = 1;
    50                 d[v] = -d[tu];
    51                 init(tu,v);
    52                 q.push(v);
    53             }
    54         }
    55     }
    56 }
    57 int main()
    58 {
    59     int i,n,s,v;
    60     scanf("%d",&n);
    61     for(i = 1; i <= n ; i++)
    62     {
    63         scanf("%d",&co[i]);
    64         int a;
    65         while(scanf("%d",&a)&&a)
    66         ge[i].push_back(a);
    67     }
    68     scanf("%d%d",&s,&v);
    69     d[s] = 1;
    70     p[s].f = 1;
    71     p[s].nu = v;
    72     p[s].de = 1;
    73     vis[s] = 1;
    74     bfs(s);
    75     for(i = 1; i <= n ; i++)
    76     {
    77         if(p[i].f==-1&&p[i].nu)
    78         printf("-");
    79         if(p[i].nu==0)
    80         p[i].de = 1;
    81         printf("%d/%d
    ",p[i].nu,p[i].de);
    82     }
    83     return 0;
    84 }
    View Code
  • 相关阅读:
    移动端适配rem/vw,vh原理(详细)
    PHP中获取不到自定义header参数解决方案
    java tempalte 0.1
    【JSR269实战】之编译时操作AST,修改字节码文件,以实现和lombok类似的功能
    nuxt
    怎么免费搞下百度文库文章
    npm init y中的y
    npm 源管理
    vue 面试题 资料列表
    node lowdb 入门操作
  • 原文地址:https://www.cnblogs.com/shangyu/p/3401360.html
Copyright © 2020-2023  润新知