#include <bits/stdc++.h>
#define lld int
#define pb push_back
using namespace std;
lld ilw,ilk,k;
lld a,b;
vector < lld > graf[310];
bool czyu[310];
bool odw[310];
lld wart[310];
lld ogw=1000000000;
lld aktw=0;
lld wtf[100];
void dfs(lld wier)
{
for(lld i = 0;i<graf[wier].size();++i)
{
if(odw[graf[wier][i]]==0 or wart[graf[wier][i]]<wart[wier]+1)
{
odw[graf[wier][i]]=1;
wart[graf[wier][i]]=wart[wier]+1;
aktw=max(wart[wier]+1,aktw);
dfs(graf[wier][i]);
}
}
}
int main()
{
srand(time(NULL));
scanf("%d%d%d",&ilw,&ilk,&k);
for(lld i = 0;i<ilk;++i)
{
scanf("%d%d",&a,&b);
graf[a].pb(b);
czyu[a]=1;
czyu[b]=1;
}
for(lld oo = 0;oo<=100000;++oo)
{
for(lld i = 0;i<310;++i)
{
odw[i]=0;
wart[i]=0;
}
lld r = 0;
for(lld i = 0;i<k;++i)
{
r =rand()%ilw+1;
while(czyu[r]==0 or odw[r]==1)
{
r=rand()%ilw+1;
}
odw[r]=1;
wart[r]=1000000000;
}
for(lld i = 1;i<=ilw;++i)
{
if(odw[i]==0)
{
wart[i]=1;
aktw=max(aktw,1);
dfs(i);
}
}
ogw=min(ogw,aktw);
aktw=0;
}
printf("%d",ogw);
}
/*
11
2
2
2
2
2
2
2
2
2
2
28
*/
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 78 79 80 81 82 83 | #include <bits/stdc++.h> #define lld int #define pb push_back using namespace std; lld ilw,ilk,k; lld a,b; vector < lld > graf[310]; bool czyu[310]; bool odw[310]; lld wart[310]; lld ogw=1000000000; lld aktw=0; lld wtf[100]; void dfs(lld wier) { for(lld i = 0;i<graf[wier].size();++i) { if(odw[graf[wier][i]]==0 or wart[graf[wier][i]]<wart[wier]+1) { odw[graf[wier][i]]=1; wart[graf[wier][i]]=wart[wier]+1; aktw=max(wart[wier]+1,aktw); dfs(graf[wier][i]); } } } int main() { srand(time(NULL)); scanf("%d%d%d",&ilw,&ilk,&k); for(lld i = 0;i<ilk;++i) { scanf("%d%d",&a,&b); graf[a].pb(b); czyu[a]=1; czyu[b]=1; } for(lld oo = 0;oo<=100000;++oo) { for(lld i = 0;i<310;++i) { odw[i]=0; wart[i]=0; } lld r = 0; for(lld i = 0;i<k;++i) { r =rand()%ilw+1; while(czyu[r]==0 or odw[r]==1) { r=rand()%ilw+1; } odw[r]=1; wart[r]=1000000000; } for(lld i = 1;i<=ilw;++i) { if(odw[i]==0) { wart[i]=1; aktw=max(aktw,1); dfs(i); } } ogw=min(ogw,aktw); aktw=0; } printf("%d",ogw); } /* 11 2 2 2 2 2 2 2 2 2 2 28 */ |
English