Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1.
- #include<stdio.h>
- #include<bits/stdc++.h>
- using namespace std;
- vector<int>adj[10000];
- bool visited[10000];
- int dis[10000];
- int bfs(int s,int desti)
- {
- queue<int>q;
- q.push(s);
- visited[s]=true;
- dis[s]=0;
- while(!q.empty())
- {
- int u=q.front();
- q.pop();
- // cout<<u<<" ";
- for(int i=0;i<adj[u].size();i++)
- {
- if(visited[adj[u][i]]==false)
- {
- int v=adj[u][i];
- visited[v]=true;
- dis[v]=dis[u]+1;
- q.push(v);
- }
- }
- }
- return dis[desti];
- // cout<<endl;
- }
- int main()
- {
- int n,e,i,x,y;
- scanf("%d %d",&n,&e);
- for(i=0;i<e;i++)
- {
- cin>>x>>y;
- adj[x].push_back(y);
- adj[y].push_back(x);
- }
- int desti;
- cin>>desti;
- int ans=bfs(0,desti);
- cout<<ans<<endl;
- return 0;
- }
- *********************************************************
- 2.
- #include<stdio.h>
- #include<bits/stdc++.h>
- using namespace std;
- vector<int>adj[10000];
- bool visited[10000];
- int dis[10000];
- int bfs(int s,int desti)
- {
- queue<int>q;
- q.push(s);
- visited[s]=true;
- dis[s]=0;
- while(!q.empty())
- {
- int u=q.front();
- q.pop();
- // cout<<u<<" ";
- for(int i=0;i<adj[u].size();i++)
- {
- if(visited[adj[u][i]]==false)
- {
- int v=adj[u][i];
- visited[v]=true;
- dis[v]=dis[u]+1;
- q.push(v);
- }
- }
- }
- return dis[desti];
- // cout<<endl;
- }
- int main()
- {
- int n,e,i,x,y;
- scanf("%d %d",&n,&e);
- for(i=0;i<e;i++)
- {
- cin>>x>>y;
- adj[x].push_back(y);
- adj[y].push_back(x);
- }
- int lina,nora,lara;
- cin>>lina>>nora>>lara;
- int ans1=bfs(nora,lina);
- memset(dis,0,sizeof dis);
- memset(visited,false,sizeof visited);
- int ans2=bfs(lara,lina);
- if(ans1<ans2)
- {
- cout<<"Nora"<<endl;
- }
- else if(ans1==ans2)
- {
- cout<<"Both"<<endl;
- }
- else
- {
- cout<<"Lara"<<endl;
- }
- return 0;
- }
- ***********************************************************
- 3.
- #include<stdio.h>
- #include<bits/stdc++.h>
- using namespace std;
- vector<int>adj[10000];
- bool visited[10000];
- int dis[10000];
- void bfs(vector<int>sources)
- {
- queue<int>q;
- for(int i=0;i<sources.size();i++)
- {
- int s=sources[i];
- q.push(s);
- visited[s]=true;
- dis[s]=0;
- }
- while(!q.empty())
- {
- int u=q.front();
- q.pop();
- // cout<<u<<" ";
- for(int i=0;i<adj[u].size();i++)
- {
- if(visited[adj[u][i]]==false)
- {
- int v=adj[u][i];
- visited[v]=true;
- dis[v]=dis[u]+1;
- q.push(v);
- }
- }
- }
- return ;
- }
- int main()
- {
- int n,e,i,x,y;
- scanf("%d %d",&n,&e);
- for(i=0;i<e;i++)
- {
- cin>>x>>y;
- adj[x].push_back(y);
- }
- int desti;
- cin>>desti;
- int n_source;
- cin>>n_source;
- vector<int>sources;
- for(int i=0;i<n_source;i++)
- {
- int x;
- cin>>x;
- sources.push_back(x);
- }
- bfs(sources);
- cout<<dis[desti]<<endl;
- return 0;
- }
- **********************************************************
- 4.
- #include<stdio.h>
- #include<bits/stdc++.h>
- using namespace std;
- vector<int>adj[10000];
- int visited[10000];
- int dis[10000];
- int start_time[10000];
- int finish_time[10000];
- int Time=1;
- void dfs(int source)
- {
- visited[source]=1;
- start_time[source]=Time;
- Time++;
- for(int i=0;i<adj[source].size();i++)
- {
- int v=adj[source][i];
- if(visited[v]==0)
- {
- dfs(v);
- }
- }
- visited[source]=2;
- finish_time[source]=Time;
- Time++;
- return ;
- }
- int main()
- {
- int n,e,i,x,y;
- cin>>n>>e;
- for(int i=0;i<e;i++)
- {
- cin>>x>>y;
- adj[x].push_back(y);
- // adj[y].push_back(x);
- }
- for(int i=0;i<n;i++)
- {
- if(visited[i]==0)
- {
- dfs(i);
- }
- }
- vector<pair<int,int> >v;
- for(int i=0;i<n;i++)
- {
- v.push_back(make_pair(finish_time[i],i));
- }
- sort(v.begin(),v.end());
- reverse(v.begin(),v.end());
- cout<<v[0].second<<endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment