Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<list>
- #include<queue>
- using namespace std;
- list<int>adj[100];
- list<int>::iterator it;
- int prev[100],d[100],color[100];
- void BFS(int s,int v)
- {
- for(int i=1;i<=v;i++){
- prev[i]=-1;
- color[i]=0;
- d[i]=0;
- }
- queue<int> q;
- color[s]=0;
- q.push(s);
- while(!q.empty()){
- int u=q.front();
- q.pop();
- for(it=adj[u].begin();it!=adj[u].end();it++){
- int k=*it;
- if(color[k]==0){
- color[k]=1;
- prev[k]=u;
- d[k]=d[u]+1;
- q.push(k);
- }
- }
- color[u]=2;
- }
- }
- int main()
- {
- int v;
- cout<<"vertex: ";
- cin>>v;
- for(int i=1;;i++){
- int m,n;
- cout<<"Edge "<<i<<": ";
- cin>>m>>n;
- if(m==0&&n==0){
- break;
- }
- else if(m>v||n>v){
- cout<<"Please Right Input: ";
- cout<<"Edge "<<i++<<": ";
- cin>>m>>n;
- adj[m].push_back(n);
- adj[n].push_back(m);
- }
- else{
- adj[m].push_back(n);
- adj[n].push_back(m);
- }
- }
- for(int i=1;i<=v;i++){
- cout<<"adj["<<i<<"]";
- for(it=adj[i].begin();it!=adj[i].end();it++){
- cout<<"->"<<*it;
- }
- cout<<endl;
- }
- cout<<"Input Source: ";
- int s;
- cin>>s;
- BFS(s,v);
- cout<<"COLOR: ";
- for(int i=1;i<=v;i++){
- cout<<color[i]<<" ";
- }
- cout<<endl;
- cout<<"COST: ";
- for(int i=1;i<=v;i++){
- cout<<d[i]<<" ";
- }
- cout<<endl;
- cout<<"PREVIOUS: ";
- for(int i=1;i<=v;i++){
- cout<<prev[i]<<" ";
- }
- cout<<endl;
- }
Add Comment
Please, Sign In to add comment