#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 */ |