//#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
using namespace std;
int n, m, k, a, b, l[4],wmax=301, w;
vector <int>ls[301];
int tab[301];
void sciezka()
{
w = 0;
for (int i = 1; i <= n; i++)
{
tab[i] = 1;
}
for (int i = 0; i < 4; i++)tab[l[i]] = 0;
for (int i = 1; i <= n; i++)
{
for (int j = 0; j < 4; j++)tab[l[j]] = 0;
//printf("%d ", tab[i]);
for (int j = ls[i].size(); j > 0; j--)
{
if (tab[ls[i][j - 1]] <= tab[i]&&tab[i]!=0)tab[ls[i][j - 1]] = tab[i] + 1;
}
if (tab[i] > w)w = tab[i];
}
if (w < wmax)wmax = w;
//printf("\n%d %d %d %d %d\n", l[0], l[1], l[2], l[3], w);
}
int main()
{
scanf("%d%d%d", &n, &m, &k);
for (int i = 0; i < m; i++)
{
scanf("%d%d", &a, &b);
ls[a].push_back(b);
}
if (k == 0)sciezka();
else
{
for (int i1 = 1; i1 <= n; i1++)
{
l[0] = i1;
if (k == 1)sciezka();
else
{
for (int i2 = i1 + 1; i2 <= n; i2++)
{
l[1] = i2;
if (k == 2)sciezka();
else
{
for (int i3 = i2 + 1; i3 <= n; i3++)
{
l[2] = i3;
if (k == 3)sciezka();
else
{
for (int i4 = i3 + 1; i4 <= n; i4++)
{
l[3] = i4;
sciezka();
}
}
}
}
}
}
}
}
printf("%d\n", wmax);
//system("PAUSE");
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | //#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <vector> using namespace std; int n, m, k, a, b, l[4],wmax=301, w; vector <int>ls[301]; int tab[301]; void sciezka() { w = 0; for (int i = 1; i <= n; i++) { tab[i] = 1; } for (int i = 0; i < 4; i++)tab[l[i]] = 0; for (int i = 1; i <= n; i++) { for (int j = 0; j < 4; j++)tab[l[j]] = 0; //printf("%d ", tab[i]); for (int j = ls[i].size(); j > 0; j--) { if (tab[ls[i][j - 1]] <= tab[i]&&tab[i]!=0)tab[ls[i][j - 1]] = tab[i] + 1; } if (tab[i] > w)w = tab[i]; } if (w < wmax)wmax = w; //printf("\n%d %d %d %d %d\n", l[0], l[1], l[2], l[3], w); } int main() { scanf("%d%d%d", &n, &m, &k); for (int i = 0; i < m; i++) { scanf("%d%d", &a, &b); ls[a].push_back(b); } if (k == 0)sciezka(); else { for (int i1 = 1; i1 <= n; i1++) { l[0] = i1; if (k == 1)sciezka(); else { for (int i2 = i1 + 1; i2 <= n; i2++) { l[1] = i2; if (k == 2)sciezka(); else { for (int i3 = i2 + 1; i3 <= n; i3++) { l[2] = i3; if (k == 3)sciezka(); else { for (int i4 = i3 + 1; i4 <= n; i4++) { l[3] = i4; sciezka(); } } } } } } } } printf("%d\n", wmax); //system("PAUSE"); } |
English