Problem link :https://uva.onlinejudge.org/index.php?option=onlinejudge&Itemid=99999999&page=show_problem&category=&problem=216&mosmsg=Submission+received+with+ID+17192900
Solution :
#include<bits/stdc++.h>
using namespace std;
int visited[102];
vector<int>v[102];
void bfs(int s,int n)
{
int cnt=0,u,p,ans;
memset(visited,-1,sizeof(visited));
queue<int>q;
q.push(s);
while(!q.empty())
{
u=q.front();
q.pop();
for(int i=0; i<v[u].size(); i++)
{
p=v[u][i];
if(visited[p]==-1)
{
visited[p]=0;
q.push(p);
cnt++;
}
}
}
ans=n-cnt;
cout<<ans;
for(int i=1; i<=n; i++)
{
if(visited[i]==-1) cout<<" "<<i;
}
cout<<endl;
}
int main()
{
int t,a,b,r=0,t1;
while( (cin>>t) and (t!=0))
{
while(1)
{
if(r==0)
{
cin>>a;
if(a==0) break;
r++;
}
cin>>b;
if(b==0) r=0;
else
{
v[a].push_back(b);
}
}
cin>>t1;
for(int i=0; i<t1; i++)
{
cin>>b;
bfs(b,t);
}
for(int i=0; i<102; i++) v[i].clear();
}
}
Solution :
#include<bits/stdc++.h>
using namespace std;
int visited[102];
vector<int>v[102];
void bfs(int s,int n)
{
int cnt=0,u,p,ans;
memset(visited,-1,sizeof(visited));
queue<int>q;
q.push(s);
while(!q.empty())
{
u=q.front();
q.pop();
for(int i=0; i<v[u].size(); i++)
{
p=v[u][i];
if(visited[p]==-1)
{
visited[p]=0;
q.push(p);
cnt++;
}
}
}
ans=n-cnt;
cout<<ans;
for(int i=1; i<=n; i++)
{
if(visited[i]==-1) cout<<" "<<i;
}
cout<<endl;
}
int main()
{
int t,a,b,r=0,t1;
while( (cin>>t) and (t!=0))
{
while(1)
{
if(r==0)
{
cin>>a;
if(a==0) break;
r++;
}
cin>>b;
if(b==0) r=0;
else
{
v[a].push_back(b);
}
}
cin>>t1;
for(int i=0; i<t1; i++)
{
cin>>b;
bfs(b,t);
}
for(int i=0; i<102; i++) v[i].clear();
}
}
No comments:
Post a Comment