青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

coreBugZJ

此 blog 已棄。

The Social Network, The 36th ACM/ICPC Asia Regional Chengdu Site —— Online Contest

The Social Network

Time Limit: 3000/2000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Others)

Problem Description
The social network system (SNS) helps people to keep connecting with their friends. Every user in SNS has a friends list. The user can read news posted by the users in his friends list. Friend relation is symmetric - if A is a friend of B, B is always a friend of A.

Another important function in SNS is friend recommendation. One effective way to recommend friends is recommend by mutual friends. A mutual friend between two users A and B, is a user who is a friend of both A and B. A user can not be a friend of himself. For a specific user A, the system will recommend the user who is not himself or his friend, and has mutual friends with A. If more than one such user exists, recommend the one has most mutual friends with A. If still a tie exists, output all of them.
 

Input
The first line is a integer T (T≤100), the number of test case.
The beginning of each test case is two integers N and Q, the number of friend relationship and the number of query. 1 ≤ N, Q ≤ 1000
The following N lines each contain two different names separated by a single space. Each name consisted by only lowercase letters, and its length is less than or equal to 15. This means the two users are friends. No friend relationship will be given more than once.
The following Q lines each describe a query. Each line contain one user name. The data guarantee that this name appears at least once in above N lines.
 

Output
For each case, you should output one line containing “Case k: ” first, where k indicates the case number and counts from one. Then for each query, output one line, contains one or more names of recommended friends, separate by a single space, sorted by alphabetical order. If no persons can be recommended, output one line contains “-”.
 

Sample Input
1
10 11
hongshu digua
yingying hongshu
xmm hongshu
huaxianzi xmm
tangjiejie huaxianzi
xhmz yingying
digua xhmz
zt tangjiejie
xmm lcy
notonlysuccess ljq
hongshu
digua
yingying
xmm
huaxianzi
tangjiejie
xhmz
zt
lcy
notonlysuccess
ljq
 

Sample Output
Case 1:
xhmz
yingying
digua
digua tangjiejie yingying
hongshu lcy zt
xmm
hongshu
huaxianzi
hongshu huaxianzi
-
-




  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include <string.h>
  4 
  5 #define  N  2002
  6 #define  NAMELEN  17
  7 
  8 /* id 1..nId */
  9 /* id <=> name */
 10 #define  TC  26
 11 #define  TM  100000
 12 struct __Trie
 13 {
 14         struct __Trie * ch[ TC ];
 15         int id;
 16 };
 17 typedef  struct __Trie  Trie;
 18 Trie  trieMem[ TM ];
 19 char  nameMem[ N ][ NAMELEN ];
 20 int nId, totMem;
 21 Trie *root;
 22 
 23 int  getIdFromName( char *name ) {
 24         char *= name;
 25         Trie **pp = &root;
 26         for ( ; ; ) {
 27                 if ( NULL == (*pp) ) {
 28                         *pp = trieMem + totMem++;
 29                         memset( (*pp), 0sizeof(Trie) );
 30                 }
 31                 if ( *p ) {
 32                         pp = &( (*pp)->ch[ (*p) - 'a' ] );
 33                         ++p;
 34                 }
 35                 else {
 36                         if ( (*pp)->id ) {
 37                                 return ((*pp)->id);
 38                         }
 39                         else {
 40                                 (*pp)->id = ++nId;
 41                                 strcpy( nameMem[ nId ], name );
 42                                 return nId;
 43                         }
 44                 }
 45         }
 46         return 0;
 47 }
 48 #define  getNameFromId(id) nameMem[ (id) ]
 49 
 50 char isFri[ N ][ N ];
 51 int  friend[ N ][ N ], numFri[ N ];/* friend[ i ][ 1..numFri[i] ] */
 52 int  mut[ N ][ N ];
 53 
 54 void  init() {
 55         root  = NULL;
 56         nId = 0;
 57         totMem = 0;
 58         memset( isFri, 0sizeof(isFri) );
 59         memset( numFri, 0sizeof(numFri) );
 60         memset( mut, 0sizeof(mut) );
 61 }
 62 
 63 int  cmpNameById( const void *a, const void *b ) {
 64         return strcmp( getNameFromId(*((int*)a)), getNameFromId(*((int*)b)) );
 65 }
 66 
 67 
 68 void  process() {
 69         int i, j, k, x, y;
 70         for ( k = nId; k > 0--k ) {
 71                 for ( i = numFri[ k ]; i > 0--i ) {
 72                         x = friend[ k ][ i ];
 73                         for ( j = i - 1; j > 0--j ) {
 74                                 y = friend[ k ][ j ];
 75                                 if ( 0 == isFri[ x ][ y ] ) {
 76                                         ++mut[ x ][ y ];
 77                                         ++mut[ y ][ x ];
 78                                 }
 79                         }
 80                 }
 81         }
 82 }
 83 
 84 void query( char *name ) {
 85         static int mf[ N ];
 86         int i, j, maxMut = 0, k = 0;
 87         i = getIdFromName( name );
 88         for ( j = nId; j > 0--j ) {
 89                 if ( mut[ i ][ j ] > maxMut ) {
 90                         maxMut = mut[ i ][ j ];
 91                         k = 1;
 92                         mf[ 0 ] = j;
 93                 }
 94                 else if ( mut[ i ][ j ] == maxMut ) {
 95                         mf[ k++ ] = j;
 96                 }
 97         }
 98         if ( maxMut == 0 ) {
 99                 puts( "-" );
100                 return;
101         }
102         qsort( mf, k, sizeof(mf[0]), cmpNameById );
103         printf( "%s", getNameFromId(mf[0]) );
104         for ( i = 1; i < k; ++i ) {
105                 printf( " %s", getNameFromId(mf[i]) );
106         }
107         puts( "" );
108 }
109 
110 int  main() {
111         int m, q, tc, cc, idA, idB;
112         char nameA[ NAMELEN ], nameB[ NAMELEN ];
113         scanf( "%d"&tc );
114         for ( cc = 1; cc <= tc; ++cc ) {
115                 init();
116                 scanf( "%d%d"&m, &q );
117                 while ( m-- > 0 ) {
118                         scanf( "%s%s", nameA, nameB );
119                         idA = getIdFromName( nameA );
120                         idB = getIdFromName( nameB );
121                         if ( (0 == isFri[ idA ][ idB ]) && (idA != idB) ) {
122                                 isFri[ idA ][ idB ] = isFri[ idB ][ idA ] = 1;
123                                 friend[ idA ][ ++numFri[idA] ] = idB;
124                                 friend[ idB ][ ++numFri[idB] ] = idA;
125                         }
126                 }
127                 process();
128                 printf( "Case %d:\n", cc );
129                 while ( q-- > 0 ) {
130                         scanf( "%s", nameA );
131                         query( nameA );
132                 }
133         }
134         return 0;
135 }
136 

posted on 2011-09-11 17:04 coreBugZJ 閱讀(356) 評論(0)  編輯 收藏 引用 所屬分類: ACM

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国语自产精品视频在线看| 亚洲美女少妇无套啪啪呻吟| 亚洲欧美日韩国产| 亚洲精品一级| 欧美私人啪啪vps| 午夜视频精品| 久久精品2019中文字幕| 在线观看中文字幕不卡| 亚洲国产欧美一区二区三区丁香婷| 久久综合99re88久久爱| 亚洲精品日韩一| 一区二区三区av| 国产一区二区在线免费观看| 美女任你摸久久| 欧美极品一区| 欧美一区二区三区在| 久久视频精品在线| 一区二区三区成人精品| 久久经典综合| 在线视频日韩| 久久精视频免费在线久久完整在线看| 亚洲激精日韩激精欧美精品| 一本色道久久综合狠狠躁篇怎么玩 | 欧美在线黄色| 99re热精品| 篠田优中文在线播放第一区| 亚洲精品小视频在线观看| 亚洲一区二区欧美| 最新国产の精品合集bt伙计| 亚洲手机成人高清视频| 在线精品视频一区二区| 一区二区三区导航| 亚洲国产欧美精品| 亚洲欧美综合一区| 亚洲美女在线观看| 久久精品日韩欧美| 亚洲男女自偷自拍图片另类| 久久人人精品| 欧美亚洲在线视频| 欧美激情视频给我| 久久夜色精品一区| 国产精品日本| 亚洲精品中文字幕在线| 在线免费不卡视频| 欧美一级视频| 午夜精品视频在线| 欧美日韩亚洲一区二区| 亚洲国产专区校园欧美| 亚洲大胆女人| 久久精品国产999大香线蕉| 亚洲综合成人婷婷小说| 欧美电影免费观看高清| 久久字幕精品一区| 国模吧视频一区| 亚洲欧美另类国产| 欧美一区二区三区久久精品茉莉花 | 亚洲人成人一区二区三区| 有坂深雪在线一区| 久久久久9999亚洲精品| 久久精品理论片| 国产美女精品在线| 午夜精品一区二区三区电影天堂| 亚洲午夜久久久久久久久电影院| 欧美国产先锋| 亚洲精品一区二区三区樱花 | 国产欧美欧洲在线观看| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 久久精品欧洲| 国产视频久久久久久久| 午夜精品视频在线观看| 久久精品视频99| 国外精品视频| 久久久久久精| 亚洲黄页视频免费观看| 99re热精品| 欧美日韩中字| 亚洲一二三级电影| 久久精品一二三区| 亚洲第一色中文字幕| 欧美不卡在线视频| 亚洲人成精品久久久久| 亚洲网在线观看| 国产精品麻豆成人av电影艾秋 | 欧美韩日视频| 日韩视频一区二区三区| 欧美日韩高清一区| 亚洲在线视频观看| 久久一区二区三区av| 亚洲人成在线播放| 国产精品久久久久久五月尺| 欧美一区二区三区婷婷月色| 蜜桃av久久久亚洲精品| 日韩亚洲视频| 国产精品亚洲成人| 久久久亚洲人| 一区二区欧美精品| 免费成人黄色片| 一个色综合av| 国内精品久久久久久| 欧美精品观看| 午夜日韩在线| 亚洲国产日韩欧美一区二区三区| 亚洲一区二区三区免费视频| 狠狠做深爱婷婷久久综合一区| 欧美国产日韩精品免费观看| 亚洲欧美激情视频| 亚洲大片在线| 久久精品官网| 亚洲视频免费在线观看| 狠狠网亚洲精品| 国产精品久久久久久久久免费| 久久嫩草精品久久久久| 亚洲视频在线二区| 亚洲国产精品电影在线观看| 午夜精品国产| 99热免费精品| 亚洲韩国精品一区| 国产午夜精品一区理论片飘花 | 欧美电影美腿模特1979在线看| 亚洲午夜未删减在线观看| 欧美成人日韩| 久久精品国产免费观看| 亚洲一区二区三区涩| 亚洲精品看片| 亚洲大片在线| 激情欧美一区二区三区| 国产精品自拍三区| 欧美日韩调教| 欧美日本韩国| 欧美久久视频| 美女诱惑黄网站一区| 久久久亚洲一区| 欧美中文在线观看| 亚洲女性喷水在线观看一区| 中文在线一区| 99精品国产热久久91蜜凸| 亚洲精品看片| 91久久夜色精品国产九色| 欧美国产第一页| 欧美大片在线观看一区| 欧美成年人视频网站欧美| 老司机午夜精品| 久久亚洲综合网| 免费欧美高清视频| 欧美国产日韩一二三区| 欧美成人免费大片| 欧美黄网免费在线观看| 欧美国产视频在线| 亚洲国产精品电影| 亚洲免费精品| 亚洲午夜精品久久| 午夜国产精品影院在线观看| 亚洲欧美国内爽妇网| 欧美一区二区精品久久911| 先锋影音一区二区三区| 久久福利视频导航| 久久一日本道色综合久久| 久久综合九色综合久99| 欧美精品一区二区三| 欧美日韩一区在线视频| 国产精品日韩欧美一区二区三区| 国产欧美精品在线播放| 黄色一区二区三区四区| 亚洲激情影视| 亚洲视频一区| 久久精品30| 亚洲国产精品毛片| 亚洲天堂男人| 久久精品在线视频| 欧美精品www在线观看| 国产精品久久久99| 伊人精品久久久久7777| av成人福利| 久久久久国产精品一区三寸| 欧美成人激情视频| 中文一区二区| 老司机免费视频久久| 国产精品剧情在线亚洲| 在线观看欧美精品| 亚洲视频一区在线观看| 久久久无码精品亚洲日韩按摩| 亚洲国产一区视频| 欧美在线一二三四区| 欧美另类videos死尸| 国产亚洲成av人在线观看导航| 亚洲国产欧美精品| 欧美一区午夜精品| 亚洲精品免费一二三区| 欧美一区二区视频在线| 欧美日韩另类国产亚洲欧美一级| 国产欧美一区视频| 一区二区不卡在线视频 午夜欧美不卡'| 香蕉尹人综合在线观看| 亚洲精品久久久久中文字幕欢迎你| 亚洲免费在线| 欧美日韩免费观看一区三区 | 国内视频精品| 亚洲欧美在线免费观看| 亚洲欧洲一区二区天堂久久| 久久精品国产清高在天天线|