• <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>

            poj1300

            Door Man

            Time Limit: 1000MS Memory Limit: 10000K
            Total Submissions: 1339 Accepted: 487

            Description

            You are a butler in a large mansion. This mansion has so many rooms that they are merely referred to by number (room 0, 1, 2, 3, etc...). Your master is a particularly absent-minded lout and continually leaves doors open throughout a particular floor of the house. Over the years, you have mastered the art of traveling in a single path through the sloppy rooms and closing the doors behind you. Your biggest problem is determining whether it is possible to find a path through the sloppy rooms where you:

            1. Always shut open doors behind you immediately after passing through
            2. Never open a closed door
            3. End up in your chambers (room 0) with all doors closed

            In this problem, you are given a list of rooms and open doors between them (along with a starting room). It is not needed to determine a route, only if one is possible.

            Input

            Input to this problem will consist of a (non-empty) series of up to 100 data sets. Each data set will be formatted according to the following description, and there will be no blank lines separating data sets.
            A single data set has 3 components:

            1. Start line - A single line, "START M N", where M indicates the butler's starting room, and N indicates the number of rooms in the house (1 <= N <= 20).
            2. Room list - A series of N lines. Each line lists, for a single room, every open door that leads to a room of higher number. For example, if room 3 had open doors to rooms 1, 5, and 7, the line for room 3 would read "5 7". The first line in the list represents room 0. The second line represents room 1, and so on until the last line, which represents room (N - 1). It is possible for lines to be empty (in particular, the last line will always be empty since it is the highest numbered room). On each line, the adjacent rooms are always listed in ascending order. It is possible for rooms to be connected by multiple doors!
            3. End line - A single line, "END"

            Following the final data set will be a single line, "ENDOFINPUT".

            Note that there will be no more than 100 doors in any single data set.

            Output

            For each data set, there will be exactly one line of output. If it is possible for the butler (by following the rules in the introduction) to walk into his chambers and close the final open door behind him, print a line "YES X", where X is the number of doors he closed. Otherwise, print "NO".

            Sample Input

            START 1 2
            1
            
            END
            START 0 5
            1 2 2 3 3 4 4
            
            
            
            
            END
            START 0 10
            1 9
            2
            3
            4
            5
            6
            7
            8
            9
            
            END
            ENDOFINPUT

            Sample Output

            YES 1
            NO
            YES 10
            以門為邊,房間為點,顯然題目中已經說明該圖連通
            我們要做的就是判斷該圖是否有歐拉回路或歐拉通路
            并且要求一定的起點和終點
            很顯然這是個無向圖,只要統計度數,根據定理判斷即可
            主要問題在于數據如何處理
            我們用sscanf處理每一行的字符串,具體用法見百科
            #include<algorithm>
            #include
            <iostream>
            #include
            <cstring>
            #include
            <cstdio>
            #include
            <cstdlib>
            #include
            <string>
            #include
            <cmath>
            using namespace std;
            int readline(char* s)
            {
                
            int l;
                
            for(l=0; (s[l]=getchar())!='\n'&&s[l]!=EOF; l++);
                s[l]
            =0;
                
                
            return l;
            }

            int main()
            {
                
            int i,j,k;
                
            char buf[150];
                
            int m,n;
                
            int door[20];
                
            int doors;
                
            int odd,even;
                
            while(readline(buf))
                
            {
                    
            if (buf[0]=='S')
                    
            {
                        sscanf(buf,
            "%*s %d %d",&m,&n);
                        memset(door,
            0,sizeof(door));
                        doors
            =0;
                        
            for(i=0; i<n; i++)
                        
            {
                            readline(buf);
                            k
            =0;
                            
            while(sscanf(buf+k,"%d",&j)==1)//處理每一行
                            {
                                doors
            ++;
                                door[i]
            ++;
                                door[j]
            ++;
                                
            while(buf[k]&&buf[k]==' ') k++;
                                
            while(buf[k]&&buf[k]!=' ') k++;
                            }

                        }

                        readline(buf);
                        odd
            =0;
                        even
            =0;
                        
            for(i=0; i<n; i++)
                        
            {
                            
            if (door[i]%2==0)
                            
            {
                                even
            ++;
                            }

                            
            else odd++;
                        }

                        
            if (odd==0&&m==0)
                        
            {
                            printf(
            "YES %d\n",doors);
                        }

                        
            else if(odd==2&&(door[m]%2==1)&&(door[0]%2==1)&&m!=0)
                        
            {
                            printf(
            "YES %d\n",doors);
                        }

                        
            else
                            printf(
            "NO\n");
                    }

                    
            else if (strcmp(buf,"ENDOFINPUT")==0)
                    
            {
                        
            break;
                    }

                }

                
            return 0;
            }

            posted on 2012-04-03 12:10 jh818012 閱讀(219) 評論(0)  編輯 收藏 引用

            <2025年7月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            導航

            統計

            常用鏈接

            留言簿

            文章檔案(85)

            搜索

            最新評論

            • 1.?re: poj1426
            • 我嚓,,輝哥,,居然搜到你的題解了
            • --season
            • 2.?re: poj3083
            • @王私江
              (8+i)&3 相當于是 取余3的意思 因為 3 的 二進制是 000011 和(8+i)
            • --游客
            • 3.?re: poj3414[未登錄]
            • @王私江
              0ms
            • --jh818012
            • 4.?re: poj3414
            • 200+行,跑了多少ms呢?我的130+行哦,你菜啦,哈哈。
            • --王私江
            • 5.?re: poj1426
            • 評論內容較長,點擊標題查看
            • --王私江
            青青国产成人久久91网| 久久AⅤ人妻少妇嫩草影院| 亚洲欧洲精品成人久久曰影片| 中文字幕无码久久精品青草| 狠狠色综合网站久久久久久久高清| 久久亚洲私人国产精品vA| 国产午夜精品久久久久九九| 亚洲欧美一级久久精品| 日韩一区二区久久久久久| 亚洲AV伊人久久青青草原| 亚洲精品乱码久久久久久蜜桃| 亚洲精品乱码久久久久久蜜桃不卡 | 亚洲αv久久久噜噜噜噜噜| 国产精品一区二区久久精品无码 | 久久久久久久综合日本| 久久精品国产72国产精福利| 国内高清久久久久久| 久久久久成人精品无码| 久久国产精品久久国产精品| 国产 亚洲 欧美 另类 久久| 亚洲精品乱码久久久久久蜜桃图片| 久久精品国产99国产精品| 国产成人综合久久综合| 国产成人精品久久亚洲高清不卡| 亚洲午夜久久久久妓女影院| 一个色综合久久| 久久免费的精品国产V∧ | 亚洲国产成人乱码精品女人久久久不卡| 亚洲精品tv久久久久久久久| 伊人久久国产免费观看视频 | 伊人久久大香线焦综合四虎| 久久精品国产一区二区三区日韩| 日韩人妻无码精品久久免费一| 亚洲精品无码久久千人斩| 久久久亚洲AV波多野结衣| 人妻无码中文久久久久专区| 综合久久给合久久狠狠狠97色| 开心久久婷婷综合中文字幕| 久久偷看各类wc女厕嘘嘘| 久久天堂AV综合合色蜜桃网| 97久久精品人妻人人搡人人玩|