• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            糯米

            TI DaVinci, gstreamer, ffmpeg
            隨筆 - 167, 文章 - 0, 評(píng)論 - 47, 引用 - 0
            數(shù)據(jù)加載中……

            POJ 1570 Exchange Rates 并查集

            并查集加上分?jǐn)?shù)運(yùn)算就可以了。
            兩種物品之間的兌換比率可以用分?jǐn)?shù)來(lái)表示,兩種物品之間是否存在聯(lián)系用并查集來(lái)表示。

            #include <stdio.h>
            #include 
            <string.h>

            typedef 
            struct {
                
            int a, b;
            } frac ;

            #define MAX_ITEM 64

            char item[MAX_ITEM][32];
            int item_cnt;

            struct {
                frac f;
                
            int p;
            set[MAX_ITEM];

            int gcd(int a, int b)
            {
                
            int t;

                
            if (a > b) {
                    a 
            ^= b;
                    b 
            ^= a;
                    a 
            ^= b;
                }

                
            while (a) {
                    t 
            = a;
                    a 
            = b % a;
                    b 
            = t;
                }

                
            return b;
            }

            frac init(
            int a, int b)
            {
                frac r;
                
            int g = gcd(a, b);

                r.a 
            = a / g;
                r.b 
            = b / g;

                
            return r;
            }

            frac mul(frac a, frac b)
            {
                
            return init(a.a * b.a, a.b * b.b);
            }

            frac div(frac a, frac b)
            {
                
            return init(a.a * b.b, a.b * b.a);
            }

            int find(int i)
            {
                
            int p;

                
            if (set[i].p == i)
                    
            return i;

                p 
            = find(set[i].p);
                
            set[i].f = mul(set[set[i].p].f, set[i].f);
                
            set[i].p = p;

                
            return p;
            }

            int insert(char *s)
            {
                
            int i;

                
            for (i = 0; i < item_cnt; i++)
                    
            if (!strcmp(s, item[i]))
                        
            return i;
                strcpy(item[item_cnt], s);
                
            return item_cnt++;
            }

            int main()
            {
                
            char op[16], sa[32], sb[32];
                
            int a, b, ia, ib, i, p;
                frac f;

                
            for (i = 0; i < MAX_ITEM; i++) {
                    
            set[i].p = i;
                    
            set[i].f = init(11);
                }

                
            while (scanf("%s", op), op[0!= '.') {
                    
            if (op[0== '!') {
                        scanf(
            "%d%s%*s%d%s"&a, sa, &b, sb);
                        ia 
            = insert(sa);
                        ib 
            = insert(sb);
                        find(ia);
                        p 
            = set[ia].p;
                        
            set[p].p = ib;
                        
            set[p].f = div(init(b, a), set[ia].f);
                    } 
            else {
                        scanf(
            "%s%*s%s", sa, sb);
                        ia 
            = insert(sa);
                        ib 
            = insert(sb);
                        find(ia);
                        find(ib);
                        
            if (set[ia].p == set[ib].p) {
                            f 
            = div(set[ia].f, set[ib].f);
                            printf(
            "%d %s = %d %s\n", f.b, item[ia], f.a, item[ib]);
                        } 
            else 
                            printf(
            "? %s = ? %s\n", item[ia], item[ib]);
                    }
                }

                
            return 0;
            }


            posted on 2010-07-22 11:59 糯米 閱讀(383) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): POJ

            久久精品国产清自在天天线| 77777亚洲午夜久久多喷| 成人国内精品久久久久一区| 国产精品一久久香蕉国产线看观看 | 国产亚洲美女精品久久久久狼| 久久―日本道色综合久久| 青青草国产精品久久| 中文国产成人精品久久亚洲精品AⅤ无码精品| 久久精品国产亚洲AV蜜臀色欲 | 日日狠狠久久偷偷色综合96蜜桃 | 嫩草伊人久久精品少妇AV| 伊人久久综在合线亚洲2019| 久久久久久午夜精品| 久久精品国产秦先生| 伊人久久综合精品无码AV专区| 久久免费精品视频| 久久精品国产亚洲77777| 欧美午夜精品久久久久久浪潮| 国产精品美女久久久久久2018| 欧美性大战久久久久久| 国产精品99久久不卡| 99久久免费国产精精品| 日韩精品久久久久久久电影蜜臀| 精品久久久久久无码中文野结衣| 久久久亚洲欧洲日产国码aⅴ| 久久婷婷是五月综合色狠狠| 久久se精品一区二区影院 | 久久久国产精品网站| 久久综合九色综合网站| 亚洲乱码精品久久久久..| 久久精品男人影院| 国产高潮国产高潮久久久| 国产美女亚洲精品久久久综合| 香蕉aa三级久久毛片| 久久99精品九九九久久婷婷 | 免费精品国产日韩热久久| 精品欧美一区二区三区久久久| 色综合久久中文综合网| 93精91精品国产综合久久香蕉| 日本福利片国产午夜久久| 国产精品va久久久久久久|