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

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>
            国产欧美日韩综合精品二区| 国内成人精品2018免费看| 亚洲成色www久久网站| 久久精品国产综合精品| 欧美影院成人| 亚洲国产精品女人久久久| 亚洲国产高清一区| 欧美成人午夜激情| 亚洲一区二区免费视频| 亚洲欧美韩国| 在线激情影院一区| 最新中文字幕亚洲| 国产精品sss| 久久久伊人欧美| 免费看av成人| 亚洲欧美在线磁力| 久久九九免费视频| 99re66热这里只有精品4 | 亚洲视频在线观看网站| 亚洲一区二区视频| 在线观看欧美亚洲| 亚洲精品无人区| 国产色爱av资源综合区| 欧美成人综合在线| 国产精品久久激情| 久久免费国产精品1| 欧美乱妇高清无乱码| 欧美亚洲一区二区在线| 乱码第一页成人| 性欧美1819sex性高清| 卡一卡二国产精品| 午夜精品久久久久久久久久久| 久久国产精品一区二区三区| 一本色道88久久加勒比精品 | 久久综合中文色婷婷| 欧美激情中文字幕在线| 久久国产一区| 欧美日韩岛国| 欧美国产精品久久| 国产日韩精品在线观看| 日韩系列欧美系列| 亚洲黄一区二区三区| 欧美一级久久久久久久大片| 亚洲伦理一区| 久久伊人一区二区| 欧美伊人影院| 欧美性大战久久久久久久| 欧美成人免费在线观看| 国产伦精品一区二区三| 99视频精品| 一本色道久久综合亚洲精品不卡| 久久九九国产精品| 欧美中文日韩| 国产精品中文字幕在线观看| 亚洲精品视频在线看| 亚洲激精日韩激精欧美精品| 久久精品一二三区| 久久久噜噜噜久久人人看| 国产精品日韩精品欧美精品| 一区二区高清视频| 一本色道精品久久一区二区三区| 免费的成人av| 欧美激情视频在线播放| 亚洲大胆av| 久久久免费精品| 欧美aa在线视频| 亚洲国产欧美一区二区三区丁香婷| 欧美亚洲色图校园春色| 久久狠狠婷婷| 狠狠干狠狠久久| 欧美综合国产| 裸体一区二区| 亚洲国产精品va| 欧美1区免费| 91久久精品久久国产性色也91| 91久久精品www人人做人人爽| 久久三级福利| 亚洲第一精品夜夜躁人人躁| 亚洲激情在线观看视频免费| 欧美成人国产一区二区| 亚洲欧洲一二三| 亚洲一区二区三区乱码aⅴ| 欧美性感一类影片在线播放 | 免费视频一区| 亚洲免费福利视频| 国产精品二区在线观看| 亚洲一区在线直播| 久久久亚洲成人| 亚洲精品久久久久| 国产精品久99| 久久男人av资源网站| 亚洲区第一页| 欧美一区二区三区在线免费观看| 国产在线播精品第三| 蜜桃久久精品一区二区| 日韩一区二区精品| 久久久久久久999| 亚洲人成在线播放网站岛国| 欧美午夜不卡在线观看免费| 欧美一区二区精品在线| 亚洲电影中文字幕| 欧美在线观看一二区| 亚洲国产精品日韩| 国产精品久久福利| 久久综合一区| 亚洲在线一区二区三区| 欧美国产精品va在线观看| 亚洲欧美激情在线视频| 亚洲国产日韩综合一区| 国产精品乱看| 欧美成人在线影院| 欧美一区午夜精品| 99在线精品视频在线观看| 久久综合免费视频影院| 亚洲一区二区三区精品视频| 亚洲第一色中文字幕| 国产欧美日韩精品一区| 欧美日本在线观看| 久久久久久久欧美精品| 亚洲午夜未删减在线观看| 亚洲激情网站| 欧美xxx成人| 欧美在线观看日本一区| av成人免费在线| 亚洲黄色大片| 在线日韩中文字幕| 国产日本欧美一区二区| 欧美性感一类影片在线播放| 欧美国产极速在线| 久久综合色婷婷| 久久久久久久尹人综合网亚洲| 亚洲影视在线播放| 亚洲香蕉伊综合在人在线视看| 91久久夜色精品国产九色| 亚洲第一色在线| 美国十次了思思久久精品导航| 久久经典综合| 久久成人免费| 久久精品国产亚洲aⅴ| 亚洲四色影视在线观看| 国产精品99久久久久久宅男| 一本不卡影院| 亚洲午夜激情| 亚洲一区二区三区精品在线观看| 亚洲视频播放| 亚洲一区二区三区在线视频| av不卡在线看| 亚洲图片欧洲图片av| 亚洲综合日韩| 午夜视频在线观看一区二区三区| 亚洲欧美高清| 久久高清福利视频| 久久久久久久网| 久久综合九色九九| 欧美成人免费全部观看天天性色| 鲁大师影院一区二区三区| 免费精品视频| 亚洲人在线视频| 亚洲美女福利视频网站| 亚洲网站啪啪| 久久成人资源| 麻豆久久婷婷| 欧美日韩一区二区视频在线观看| 欧美午夜视频在线| 国产女人水真多18毛片18精品视频| 国产欧美日韩视频一区二区| 一区二区三区在线视频播放| 亚洲激情网站免费观看| 亚洲特级片在线| 久久久精品2019中文字幕神马| 蜜臀久久99精品久久久久久9| 亚洲国产成人高清精品| 亚洲深夜福利| 久久另类ts人妖一区二区| 欧美日韩大片| 国产亚洲欧洲| 夜夜嗨av一区二区三区免费区| 性色av一区二区三区红粉影视| 久久久久久穴| 亚洲精品美女在线观看播放| 亚洲永久免费观看| 欧美xxx成人| 国产麻豆一精品一av一免费| 亚洲欧洲一区二区在线播放 | 激情综合久久| 国产精品99久久不卡二区| 久久久久91| 日韩视频在线免费观看| 久久九九精品99国产精品| 欧美日韩精品二区第二页| 狠狠色综合色区| 国产精品99久久久久久宅男| 久久野战av| 中文国产亚洲喷潮| 欧美a级一区二区| 国模私拍视频一区| 亚洲一区视频在线| 亚洲电影毛片| 久久久久久久一区二区三区| 国产精品视频导航|