糯米

TI DaVinci, gstreamer, ffmpeg
随笔 - 167, 文章 - 0, 评论 - 47, 引用 - 0
数据加载中……

POJ 2139 Six Degrees of Cowvin Bacon 宽搜

也可以用floyd。

#include <stdio.h>
#include 
<string.h>

#define MAX_N 332

char conn[MAX_N][MAX_N], visited[MAX_N];
int N, M, qh, qt, min_val, val;
struct {
    
int step, idx;
}
 queue[MAX_N];

__inline 
void insert(int i, int s)
{
    
if (visited[i])
        
return ;
    queue[qt].idx 
= i;
    queue[qt].step 
= s;
    val 
+= s;
    qt
++;
    visited[i] 
= 1;
}


__inline 
void bfs(int idx)
{
    
int i, step;

    memset(visited, 
0, N + 1);
    val 
= qh = qt = 0;
    insert(idx, 
0);
    
while (qh != qt) {
        idx 
= queue[qh].idx;
        step 
= queue[qh].step;
        qh
++;
        
for (i = 1; i <= N; i++)
            
if (conn[idx][i])
                insert(i, step 
+ 1);
    }

    
if (val < min_val)
        min_val 
= val;
}


int main()
{
    
int i, j, cnt, arr[MAX_N], a, b;

    freopen(
"e:\\test\\in.txt""r", stdin);

    min_val 
= 0x7fffffff;
    scanf(
"%d%d"&N, &M);
    
while (M--{
        scanf(
"%d"&cnt);
        
for (i = 0; i < cnt; i++
            scanf(
"%d"&arr[i]);
            
for (j = 0; j < i; j++{
                a 
= arr[i];
                b 
= arr[j];
                conn[a][b] 
= conn[b][a] = 1;
            }

        }

    }

    
for (i = 1; i <= N; i++)
        bfs(i);
    printf(
"%d\n"100 * min_val / (N - 1));

    
return 0;
}

posted on 2010-03-03 16:12 糯米 阅读(222) 评论(0)  编辑 收藏 引用 所属分类: POJ


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理