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

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>
            国产裸体写真av一区二区| 国产精品美女久久久浪潮软件| 午夜在线一区| 国产亚洲福利| 欧美成人视屏| 亚洲一区国产一区| 欧美成ee人免费视频| 中文亚洲免费| 国产日韩精品在线播放| 老牛嫩草一区二区三区日本 | 久久久久久亚洲精品不卡4k岛国| 亚洲国产精品久久| 国产精品va在线播放| 久久国产夜色精品鲁鲁99| 亚洲精品久久久久久久久久久久| 亚洲欧美日韩一区二区在线| 亚洲丁香婷深爱综合| 国产精品女人网站| 欧美jizzhd精品欧美巨大免费| 国产精品99久久久久久www| 美女在线一区二区| 亚洲砖区区免费| 亚洲黄网站黄| 国产亚洲女人久久久久毛片| 欧美理论在线| 久久免费黄色| 亚洲尤物在线视频观看| 亚洲黄色大片| 老司机一区二区| 先锋影音久久久| 99pao成人国产永久免费视频| 国产原创一区二区| 国产精品夫妻自拍| 欧美久久久久免费| 麻豆国产精品777777在线| 午夜精品一区二区三区在线视 | 久久影院亚洲| 亚洲摸下面视频| 亚洲美女福利视频网站| 一区二区在线视频播放| 国产精品爽爽ⅴa在线观看| 欧美精品久久久久久久免费观看 | 久久一日本道色综合久久| 亚洲一区二区三区精品在线观看| 亚洲国产精品久久91精品| 巨乳诱惑日韩免费av| 久久九九免费| 久久精品国产清自在天天线| 午夜在线不卡| 午夜视频一区在线观看| 老司机午夜免费精品视频| av成人免费| 国产区在线观看成人精品| 久久国产日本精品| 亚洲欧美日韩综合aⅴ视频| 999亚洲国产精| 亚洲精品欧美日韩专区| 欧美激情久久久久| 免费中文字幕日韩欧美| 狂野欧美一区| 免费亚洲一区| 欧美va天堂在线| 欧美第一黄网免费网站| 欧美成人在线网站| 亚洲电影在线| 亚洲精品日韩久久| 一本综合精品| 亚洲一区二区高清视频| 亚洲在线观看免费| 午夜视频在线观看一区| 欧美亚洲三区| 久久久久久久久一区二区| 久久久久国色av免费看影院| 久久综合网络一区二区| 欧美黄色视屏| 欧美色综合天天久久综合精品| 欧美日韩在线直播| 国产精品亚洲综合天堂夜夜| 国产婷婷色一区二区三区在线| 国产午夜精品理论片a级大结局| 国产在线观看91精品一区| 激情久久影院| 亚洲黄色成人| 亚洲午夜久久久| 欧美在线|欧美| 蜜桃伊人久久| 亚洲精品美女在线| 亚洲一级二级| 久久久久久97三级| 欧美精品久久久久久久久久| 国产精品高清免费在线观看| 国产色产综合色产在线视频| 在线日韩av永久免费观看| 亚洲欧洲日本国产| 亚洲一区二区三区影院| 久久精品一区中文字幕| 亚洲国产高清自拍| 一区二区欧美国产| 久久国产精品一区二区| 欧美阿v一级看视频| 欧美系列精品| 黄色一区二区三区| 99精品国产在热久久婷婷| 欧美一区二区三区另类| 欧美电影免费网站| 亚洲男人av电影| 欧美电影资源| 国产日产精品一区二区三区四区的观看方式 | 国产精品久久久对白| 好吊色欧美一区二区三区视频| 国产一区二区三区日韩| 欧美激情一区二区三区不卡| 美女爽到呻吟久久久久| 亚洲小说欧美另类社区| 欧美伊人久久久久久午夜久久久久| 久久伊人精品天天| 欧美午夜大胆人体| 伊人久久婷婷| 亚洲欧美美女| 亚洲国产欧美日韩精品| 欧美一区二区国产| 欧美视频在线观看一区| 亚洲风情亚aⅴ在线发布| 午夜精品免费在线| 欧美韩日一区| 欧美在线观看www| 欧美丝袜一区二区| 亚洲国产欧美在线| 久久精品系列| 中文精品视频| 欧美高清视频免费观看| 韩日在线一区| 欧美在线资源| 国产精品99久久99久久久二8| 欧美不卡视频一区发布| 国产欧美丝祙| 亚洲一区综合| 亚洲国内高清视频| 久久五月激情| 国产一区二区欧美日韩| 亚洲免费在线视频| 亚洲精品免费在线观看| 麻豆精品国产91久久久久久| 国产一区二区精品久久| 亚洲综合激情| 亚洲美女黄网| 欧美激情精品久久久六区热门| 永久久久久久| 久久婷婷av| 午夜精品影院| 国产伦精品一区| 小黄鸭精品aⅴ导航网站入口| 亚洲毛片av| 欧美日韩一区自拍| 夜夜嗨av一区二区三区中文字幕 | 亚洲一区www| 亚洲精品你懂的| 欧美精品在线播放| 日韩亚洲欧美中文三级| 亚洲日本成人网| 欧美精品v国产精品v日韩精品 | 亚洲精品国精品久久99热一| 欧美不卡福利| 久久综合九色欧美综合狠狠| 国产一区二区三区免费观看| 久久精品系列| 久久久精品欧美丰满| 精品成人在线| 欧美高清在线一区| 免费欧美电影| 日韩视频一区二区三区在线播放免费观看 | 国产精品成人va在线观看| 99国产精品久久久久久久久久 | 亚洲一级在线观看| 国产精品视区| 久久久伊人欧美| 久久久精品国产免费观看同学 | 日韩午夜在线电影| 亚洲黄色有码视频| 欧美日韩人人澡狠狠躁视频| 亚洲伊人色欲综合网| 亚洲欧美日韩精品在线| 韩国女主播一区| 欧美二区不卡| 欧美精品一区二| 亚洲一区二区三区四区在线观看 | 亚洲精品在线视频| 欧美日本精品在线| 亚洲制服少妇| 久久国产夜色精品鲁鲁99| 亚洲国产老妈| 亚洲精品一区二| 国产精品综合不卡av| 麻豆av一区二区三区| 欧美激情一区二区在线| 午夜久久一区| 久久天天狠狠| 亚洲午夜三级在线| 欧美一区激情| 亚洲精品国偷自产在线99热|