第一题:两个链表找交集
#include<iostream>
#include<map>
using namespace std;
int main()
{
int n,m,i;
map<long long,int> m1;
cin>>n;
for(i=0;i<n;i++)
{
long long t;
cin>>t;
m1[t]=1;
}
cin>>m;
for(i=0;i<m;i++)
{
long long t;
cin>>t;
if(m1[t]==1)
{
cout<<t<<" ";
}
}
cout<<endl;
return 0;
}
第二题:给定n个人和m个人的小团体,消息从0开始传播,问传播到多少人
#include<iostream>
#include<vector>
#include<algorithm>
#include<map>
using namespace std;
typedef struct Node
{
vector<int> teamID;
map<int,int> m;
int f;
void setData(int x)
{
teamID.push_back(x);
m[x]=1;
}
void setf()
{
f=1;
}
}MStruct;
int is_exit(vector<int> v,int val)
{
for(int i=0;i<v.size();i++)
{
if(v[i]==val)
{
return 1;
}
}
return 0;
}
int main()
{
int n,m,i,j,k,sum=1;
vector<MStruct> v;
vector<int> mstack;
cin>>n>>m;
for(i=0;i<m;i++)
{
int l=0;
cin>>l;
MStruct ms;
ms.f=0;
for(j=0;j<l;j++)
{
int t;
cin>>t;
ms.setData(t);
}
v.push_back(ms);
}
mstack.push_back(0);
while(1)
{
int f=0;
for(k=0;k<mstack.size();k++)
{
for(i=0;i<v.size();i++)
{
if(v[i].f==0)
{
if(v[i].m[mstack[k]]==1)
{
v[i].setf();
for(j=0;j<v[i].teamID.size();j++)
{
if(is_exit(mstack,v[i].teamID[j])==0)
{
mstack.push_back(v[i].teamID[j]);
f=1;
}
}
}
}
}
}
//for(i=0;i<mstack.size();i++)
// cout<<mstack[i]<<" ";
//cout<<endl;
if(f==0)
{
break;
}
}
cout<<mstack.size()<<endl;
return 0;
}
#include<vector>
#include<algorithm>
#include<map>
using namespace std;
typedef struct Node
{
vector<int> teamID;
map<int,int> m;
int f;
void setData(int x)
{
teamID.push_back(x);
m[x]=1;
}
void setf()
{
f=1;
}
}MStruct;
int is_exit(vector<int> v,int val)
{
for(int i=0;i<v.size();i++)
{
if(v[i]==val)
{
return 1;
}
}
return 0;
}
int main()
{
int n,m,i,j,k,sum=1;
vector<MStruct> v;
vector<int> mstack;
cin>>n>>m;
for(i=0;i<m;i++)
{
int l=0;
cin>>l;
MStruct ms;
ms.f=0;
for(j=0;j<l;j++)
{
int t;
cin>>t;
ms.setData(t);
}
v.push_back(ms);
}
mstack.push_back(0);
while(1)
{
int f=0;
for(k=0;k<mstack.size();k++)
{
for(i=0;i<v.size();i++)
{
if(v[i].f==0)
{
if(v[i].m[mstack[k]]==1)
{
v[i].setf();
for(j=0;j<v[i].teamID.size();j++)
{
if(is_exit(mstack,v[i].teamID[j])==0)
{
mstack.push_back(v[i].teamID[j]);
f=1;
}
}
}
}
}
}
//for(i=0;i<mstack.size();i++)
// cout<<mstack[i]<<" ";
//cout<<endl;
if(f==0)
{
break;
}
}
cout<<mstack.size()<<endl;
return 0;
}
渣渣的我就只AC了两题😪
全部评论
(1) 回帖