标签:poj
| Time Limit: 1000MS | Memory Limit: 30000K | |
| Total Submissions: 10622 | Accepted: 3877 |
Description
Input
Output
Sample Input
3 2 1 2 2 3 2 3 1 2 1 2
Sample Output
0
Source
/*************************************************************************
> File Name: poj1847.cpp
> Author: ALex
> Mail: zchao1995@gmail.com
> Created Time: 2015年02月05日 星期四 14时37分08秒
************************************************************************/
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <vector>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const double pi = acos(-1);
const int inf = 0x3f3f3f3f;
const double eps = 1e-15;
typedef long long LL;
typedef pair <int, int> PLL;
const int N = 110;
int dp[N][N];
int main ()
{
int n, a, b;
while (~scanf("%d%d%d", &n, &a, &b))
{
memset (dp, inf, sizeof(dp));
int k, j;
for (int i = 1; i <= n; ++i)
{
scanf("%d", &k);
if (k == 0)
{
continue;
}
k--;
scanf("%d", &j);
dp[i][j] = 0;
while (k--)
{
scanf("%d", &j);
dp[i][j] = 1;
}
}
for (int i = 1; i <= n; ++i)
{
dp[i][i] = 0;
}
for (int k = 1; k <= n; ++k)
{
for (int i = 1; i <= n; ++i)
{
for (int j = 1; j <= n; ++j)
{
dp[i][j] = min (dp[i][k] + dp[k][j], dp[i][j]);
}
}
}
if (dp[a][b] != inf)
{
printf("%d\n", dp[a][b]);
}
else
{
printf("-1\n");
}
}
return 0;
}标签:poj
原文地址:http://blog.csdn.net/guard_mine/article/details/43527945