fork download
  1. /*Made by Shivam Solanki*/
  2. #include<bits/stdc++.h>
  3. #pragma GCC optimize ("Ofast")
  4. using namespace std;
  5. #define DEBUG(x) cerr << '>' << #x << ':' << x << endl;
  6. #define ll long long int
  7. #define endl '\n'
  8. typedef vector<int> vi;
  9. typedef vector<ll> vll;
  10. typedef vector<vll> vvl;
  11. typedef pair<int,int> pii;
  12. typedef pair<ll,ll> pll;
  13. typedef vector<vi> vvi;
  14. typedef vector<bool> vb;
  15. typedef vector<pii> vp;
  16. typedef vector<pll> vpll;
  17. typedef map<int,int> mii;
  18. typedef map<ll,ll> mll;
  19. typedef set<int> sii;
  20. typedef set<ll> sll;
  21. typedef queue<int> qii;
  22. typedef priority_queue<int> pq;
  23. typedef unordered_map<int,int> umii;
  24. typedef unordered_map<ll,ll> umll;
  25. #define all(x) x.begin(),x.end()
  26. #define rep(i,k,n) for (int i = k; i < n; ++i)
  27. #define repr(i,k,n) for (int i = n; i>=k; --i)
  28. #define repll(i,k,n) for (ll i = k; i < n; ++i)
  29. #define pb push_back
  30. #define mp make_pair
  31. #define gcd __gcd
  32. #define F first
  33. #define S second
  34. #define fastio ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
  35. const int INF = 1e9+5;
  36. const int MOD = 1e9+7;
  37. double pi = 2 * acos(0.0);
  38.  
  39. vvi adj;
  40. vi dis;
  41.  
  42. void bfs(int s){
  43. qii q;
  44. q.push(s);
  45. while(!q.empty()){
  46. int v=q.front();
  47. q.pop();
  48. for(int u:adj[v]){
  49. if(dis[u]>dis[v]+1){
  50. dis[u]=dis[v]+1;
  51. q.push(u);
  52. }
  53. }
  54. }
  55. }
  56.  
  57. void solve(){
  58. int n,m;
  59. cin>>n>>m;
  60. adj=vvi(n);
  61. dis=vi(n,INF);
  62. int u,v;
  63. rep(i,0,n){
  64. cin>>u>>v;
  65. u--,v--;
  66. adj[u].pb(v);
  67. adj[v].pb(u);
  68. }
  69. int k;
  70. cin>>k;
  71. vi a(k);
  72. rep(i,0,n){
  73. cin>>a[i];
  74. a[i]--;
  75. dis[a[i]]=0;
  76. }
  77. rep(i,0,k){
  78. bfs(a[i]);
  79. }
  80. int maxi =-1,ans;
  81. rep(i,0,n){
  82. if(maxi<dis[i]){
  83. maxi=dis[i];
  84. ans=i+1;
  85. }
  86. }
  87. cout<<maxi<<'\n'<<ans;
  88. }
  89.  
  90. int main(){
  91. // #ifndef ONLINE_JUDGE
  92. // freopen("input.txt", "r", stdin);
  93. // freopen("output.txt", "w", stdout);
  94. // #endif
  95. fastio;
  96. int t=1;
  97. // cin>>t;
  98. while(t--)
  99. solve();
  100. return 0;
  101. }
  102.  
Success #stdin #stdout 0s 4316KB
stdin
6 6
1 2
2 6
1 5
5 6
3 5
4 5
2
1 2
stdout
2
3