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

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 閱讀(360) 評論(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>
            亚洲国产精品va在线看黑人动漫| 欧美日韩亚洲一区二区| 这里只有精品在线播放| 久久久999精品免费| 亚洲综合二区| 欧美国产在线电影| 蘑菇福利视频一区播放| 国产精品入口日韩视频大尺度| 亚洲国产精品精华液网站| 黑人巨大精品欧美一区二区 | 亚洲美女电影在线| 尤物yw午夜国产精品视频明星| 午夜精品亚洲| 欧美一级午夜免费电影| 欧美三级资源在线| 91久久精品一区| 亚洲激情校园春色| 久久视频在线免费观看| 老鸭窝91久久精品色噜噜导演| 国产一区二区三区网站| 亚洲欧美日韩高清| 亚洲欧美综合v| 国产精品久久77777| 亚洲免费黄色| 亚洲欧美日韩一区在线| 国产精品扒开腿做爽爽爽软件 | 91久久亚洲| 亚洲美女性视频| 欧美精品一区在线| 亚洲精品一区二区三| 日韩视频免费观看高清完整版| 欧美精品久久一区| 亚洲乱码国产乱码精品精98午夜| 亚洲毛片一区| 欧美色123| 亚洲欧美日韩综合国产aⅴ| 久久国产欧美| 亚洲二区精品| 欧美激情中文不卡| 99人久久精品视频最新地址| 午夜在线a亚洲v天堂网2018| 国产亚洲精品资源在线26u| 久久久精品国产99久久精品芒果| 欧美高清成人| 一区二区日韩免费看| 国产精品青草久久| 久久精品亚洲乱码伦伦中文| 亚洲国产日韩欧美在线99 | 伊人久久大香线蕉综合热线 | 欧美女人交a| 日韩亚洲欧美精品| 午夜一区二区三区不卡视频| 黄色小说综合网站| 老司机精品视频网站| 亚洲精品乱码久久久久久| 亚洲天堂免费观看| 国内精品视频一区| 欧美精品日韩一区| 亚洲欧美日本视频在线观看| 欧美高清在线播放| 亚洲综合精品| 亚洲国产精品高清久久久| 欧美日韩国产成人在线免费| 欧美一区二区三区四区夜夜大片 | 美日韩精品视频| 亚洲国产精品免费| 亚洲男人av电影| 激情文学综合丁香| 欧美日韩国产综合视频在线| 欧美在线播放| 99视频精品全国免费| 久久久久久久91| 亚洲一区二区四区| 在线精品高清中文字幕| 欧美午夜a级限制福利片| 久久精品亚洲精品| 亚洲性感激情| 亚洲精品色图| 欧美国产精品人人做人人爱| 欧美亚洲一级片| 亚洲精选在线| 亚洲高清在线观看| 国产精品永久免费在线| 欧美精品综合| 免播放器亚洲一区| 久久国产精品久久久| 亚洲一区尤物| 一区二区精品在线| 亚洲缚视频在线观看| 久久久亚洲欧洲日产国码αv| 亚洲专区免费| 日韩视频一区二区在线观看| 亚洲国产欧美在线人成| 国内精品写真在线观看| 国产日韩av在线播放| 欧美午夜片欧美片在线观看| 欧美日韩国产一区二区三区地区 | 在线亚洲精品| 亚洲精品一区二区三区福利| 精品成人久久| 黄色精品在线看| 国产亚洲激情视频在线| 国产精品蜜臀在线观看| 亚洲国产日韩欧美一区二区三区| 在线亚洲国产精品网站| 最新亚洲一区| 最新国产の精品合集bt伙计| 亚洲国产裸拍裸体视频在线观看乱了中文 | 欧美成人精品在线| 开元免费观看欧美电视剧网站| 久久精品免费电影| 欧美一区二区免费| 欧美一区免费视频| 欧美伊人久久久久久久久影院| 欧美一区在线直播| 久久av一区二区三区漫画| 欧美在线视频观看免费网站| 欧美一区二区在线视频| 久久国产精品久久w女人spa| 久久亚洲精品网站| 免费在线一区二区| 欧美理论电影在线播放| 欧美三级特黄| 国产欧美丝祙| 亚洲第一精品夜夜躁人人躁| 亚洲麻豆av| 午夜亚洲伦理| 久久夜色精品国产| 欧美激情一区二区三区高清视频| 亚洲人成人一区二区在线观看| 99香蕉国产精品偷在线观看| 午夜精品美女自拍福到在线 | 国产午夜精品全部视频在线播放| 国产亚洲一二三区| 精品999在线观看| 亚洲免费精品| 欧美在现视频| 欧美激情国产精品| 日韩一级在线观看| 午夜精品久久久99热福利| 葵司免费一区二区三区四区五区| 欧美成人一区二区在线| 欧美三级电影一区| 国产一区日韩二区欧美三区| 日韩午夜电影| 欧美在线视频日韩| 亚洲国产一区二区a毛片| 亚洲一区二区三区在线| 老鸭窝毛片一区二区三区| 欧美日韩精品一区视频| 国产综合18久久久久久| 一二三区精品福利视频| 久久久久久夜| 一区二区毛片| 欧美国产精品久久| 国产精品一区二区三区乱码| 亚洲精品一品区二品区三品区| 欧美一区二区日韩| 亚洲国产美国国产综合一区二区| 欧美亚洲综合久久| 欧美激情自拍| 在线播放豆国产99亚洲| 亚洲欧美日韩国产一区二区三区| 亚洲大胆人体视频| 国产亚洲精品久久飘花| 日韩午夜电影| 欧美大片免费观看| 亚洲欧美综合一区| 欧美三级视频在线| 亚洲欧洲中文日韩久久av乱码| 久久久久久久999精品视频| 99re在线精品| 欧美国产免费| 亚洲区第一页| 免费观看日韩| 欧美在线三区| 国产日韩欧美在线观看| 亚洲欧美在线观看| 日韩午夜免费| 欧美精品色网| 99re66热这里只有精品3直播| 久久嫩草精品久久久精品一| 欧美亚洲日本网站| 国产精品系列在线播放| 亚洲女爱视频在线| 99re6热在线精品视频播放速度 | 国内成+人亚洲| 欧美一区久久| 一本色道88久久加勒比精品| 国产亚洲欧洲一区高清在线观看 | 午夜精品久久久久| 亚洲国产一区二区a毛片| 久久久噜噜噜久久中文字幕色伊伊| 国产欧美日韩在线 | 亚洲电影观看| 欧美精品性视频| 亚洲精品久久久久中文字幕欢迎你 | 午夜精品久久久久| 国产精品永久在线| 久久黄色网页|