#include<vector> #include<cstdio> #include<iostream> using namespace std; vector<vector<int> >name; int main(void) { int n; cin >> n; for(int i=0;i<n;i++) { int k , data; cin >> k; vector<int>temp; for(int j=0;j<k;j++) { cin >> data; temp.push_back(data); } name.push_back(temp); } for(int i=0;i<n;i++) { for(int j=0;j<name[i].size();j++) { printf("%d ",name[i][j]); } printf(" "); } return 0; } #include<cstdio> #include<iostream> #include<vector> using namespace std; int main(void) { vector<int>vi[100]; for(int i=0;i<5;i++) vi[0].push_back(i); vector<int>::iterator it; for(it=vi[0].begin();it!=vi[0].end();it++) { printf("%d ",*it); } return 0; } #include<vector> #include<iostream> #include<cstdio> #include<algorithm> using namespace std; int main(void) { vector<int>vi; for(int i=1;i<=3;i++) vi.push_back(i); vi.pop_back(); for(int i=0;i<vi.size();i++) printf("%d ",vi[i]); return 0; } #include<stdio.h> #include<vector> using namespace std; int main(void) { vector<int>vi; for(int i=0;i<3;i++) vi.push_back(i); printf("%d",vi.size()); return 0; } #include<cstdio> #include<vector> using namespace std; int main(void) { vector<int>vi; for(int i=1;i<=3;i++) vi.push_back(i); vi.clear(); printf("%d",vi.size()); return 0; } #include<cstdio> #include<vector> using namespace std; int main(void) { vector<int>vi; for(int i=1;i<=5;i++) vi.push_back(i); vi.insert(vi.begin()+2,-1); for(int i=0;i<vi.size();i++) printf("%d ",vi[i]); printf(" "); for(vector<int>::iterator it=vi.begin();it!=vi.end();it++) printf("%d ",*(it)); printf(" "); return 0; } #include<cstdio> #include<vector> using namespace std; int main(void) { vector<int> vi; for(int i=5;i<=9;i++) vi.push_back(i); vi.erase(vi.begin()+3); for(vector<int>::iterator it=vi.begin();it!=vi.end();it++) printf("%d ",*(it)); return 0; } #include<cstdio> #include<vector> using namespace std; int main(void) { vector<int> vi; for(int i=1;i<=10;i++) vi.push_back(i); vi.erase(vi.begin()+5,vi.end()); for(int i=0;i<vi.size();i++) printf("%d ",vi[i]); return 0; } #include<cstdio> #include<set> using namespace std; int main(void) { set<int> st; st.insert(3); st.insert(5); st.insert(2); st.insert(3); for(set<int>::iterator it=st.begin();it!=st.end();it++) printf("%d ",*it); return 0; } #include<cstdio> #include<set> using namespace std; int main(void) { set<int>st; for(int i=1;i<=10;i++) st.insert(i); set<int>::iterator it=st.find(3); st.erase(it); for(set<int>::iterator it=st.begin();it!=st.end();it++) printf("%d ",*it); return 0; } #include<set> #include<cstdio> using namespace std; int main(void) { set<int>st; st.insert(100); st.insert(200); st.insert(100); st.insert(300); st.erase(st.find(100)); for(set<int>::iterator it=st.begin();it!=st.end();it++) printf("%d ",*it); return 0; } #include<cstdio> #include<set> using namespace std; int main(void) { set<int>st; for(int i=1;i<=100;i++) st.insert(i); set<int>::iterator it=st.find(90); st.erase(st.begin(),it); for(set<int>::iterator it=st.begin();it!=st.end();it++) printf("%d ",*it); return 0; } #include<cstdio> #include<set> using namespace std; int main(void) { set<int>st; st.insert(100); st.insert(200); st.insert(300); st.insert(400); printf("%d",st.size()); return 0; } #include<set> #include<cstdio> using namespace std; int main(void) { set<int>st; st.insert(1); st.insert(3); st.clear(); printf("%d",st.size()); return 0; } #include<unordered_set> #include<cstdio> #include<iostream> using namespace std; int main(void) { unordered_set<int> st; st.insert(100); st.insert(2); st.insert(399); for(unordered_set<int>::iterator it=st.begin();it!=st.end();it++) printf("%d",*it); } #include<cstdio> #include<set> using namespace std; int main(void) { multiset<int>st; st.insert(100); st.insert(200); st.insert(100); for(multiset<int>::iterator it=st.begin();it!=st.end();it++) printf("%d ",*it); return 0; } #include<iostream> #include<set> #include<map> using namespace std; int main(void) { map<string,int>mp1; map<set<int>,int>mp2; map<int,set<int> >mp3; map<char,int>mp4; mp4['a']=1; mp4['b']=2; mp4['c']=3; mp4['d']=4; //printf("%d %d",mp4['a'],mp4['b']); for(map<char,int>::iterator it=mp4.begin();it!=mp4.end();it++) printf("%c %d ",it->first,it->second); return 0; } #include<map> #include<cstdio> using namespace std; int main(void) { map<char ,int >mp; mp['a']=1; mp['b']=2; mp['c']=3; mp['d']=4; //printf("%d %d",mp4['a'],mp4['b']); for(map<char,int>::iterator it=mp.begin();it!=mp.end();it++) printf("%c %d ",it->first,it->second); return 0; } #include<map> #include<cstdio> #include<string> #include<iostream> using namespace std; int main(void) { map<int,string>mp; mp[0]="hello"; mp[4]="world"; map<int,string>::iterator it=mp.find(4); printf("%d %s",it->first,(it->second).c_str()); return 0; } #include<cstdio> #include<map> using namespace std; int main(void) { map<char,int>mp; mp['a']=1; mp['b']=2; mp['c']=3; map<char,int>::iterator it=mp.find('b'); mp.erase(it); for(map<char,int>::iterator t=mp.begin();t!=mp.end();t++) printf("%c %d ",t->first,t->second); return 0; } #include<cstdio> #include<map> using namespace std; int main(void) { map<char,int>mp; mp['a']=1; mp['b']=2; mp['c']=3; map<char,int>::iterator it=mp.find('b'); mp.erase(it,mp.end()); for(map<char,int>::iterator t=mp.begin();t!=mp.end();t++) printf("%c %d ",t->first,t->second); return 0; } #include<cstdio> #include<map> using namespace std; int main(void) { map<char,int>mp; mp['a']=1; mp['b']=2; mp['c']=3; map<char,int>::iterator it=mp.find('d'); //printf("%c %d ",it->first,it->second); if(it==mp.end()) printf("don.t have. "); //mp.erase(it,mp.end()); for(map<char,int>::iterator t=mp.begin();t!=mp.end();t++) printf("%c %d ",t->first,t->second); return 0; } #include<map> #include<cstdio> using namespace std; int main(void) { multimap<char,int>mp; return 0; } #include<cstdio> #include<queue> using namespace std; int main(void) { priority_queue<int>q; q.push(1); q.push(3); q.push(2); while(!q.empty()) { int data=q.top(); printf("%d ",data); q.pop(); } return 0; } #include<cstdio> #include<queue> using namespace std; int main(void) { priority_queue<int,vector<int>,less<int> >q1; q1.push(1); q1.push(2); q1.push(5); q1.push(2); priority_queue<int,vector<int>,greater<int> >q2; q2.push(1); q2.push(2); q2.push(5); q2.push(2); while(!q1.empty()) { int data = q1.top(); q1.pop(); printf("%d ",data); } printf(" "); while(!q2.empty()) { int data = q2.top();q2.pop(); printf("%d ",data); } return 0; } #include<queue> #include<string> #include<cstdio> using namespace std; struct fruit{ string name; int price; friend bool operator<(const fruit &f1,const fruit &f2) { return f1.price<f2.price; } }f1,f2,f3; int main(void) { priority_queue<fruit>q; f1.name="桃子"; f1.price=3; f2.name="梨子"; f2.price=4; f3.name="苹果"; f3.price=1; q.push(f1); q.push(f2); q.push(f3); while(!q.empty()) { fruit temp = q.top(); q.pop(); printf("%s %d ",temp.name.c_str(),temp.price); } return 0; } #include<cstdio> #include<string> #include<time.h> #include<queue> using namespace std; struct fruit{ string name; int price; }f1,f2,f3; struct cmp{ bool operator()(const fruit &f1,const fruit &f2) { return f1.price<f2.price; } }; int main(void) { int a=clock(); priority_queue<fruit,vector<fruit>,cmp>q; f1.name="桃子"; f1.price=3; f2.name="梨子"; f2.price=4; f3.name="苹果"; f3.price=1; q.push(f1); q.push(f2); q.push(f3); while(!q.empty()) { fruit temp = q.top(); q.pop(); printf("%s %d ",temp.name.c_str(),temp.price); } int b=clock(); printf("%dms.",b-a); return 0; } #include<string> #include<cstdio> using namespace std; int main(void) { string str="abcd"; for(int i=0;i<str.length();i++) printf("%c",str[i]); printf(" %s",str.c_str()); printf(" "); for(string::iterator it=str.begin();it!=str.end();it++) printf("%c",*it); return 0; } #include<cstdio> #include<string> using namespace std; int main(void) { string str="abc",str2="def"; //str.insert(3,str2); str.insert(str.end(),str2.begin(),str2.end()); printf("%s",str.c_str()); return 0; } #include<string> #include<cstdio> using namespace std; int main(void) { string str="abcdefghijklmn"; string str1=str.substr(0,5); string str2=str.substr(2,5); printf("%s %s ",str1.c_str(),str2.c_str()); return 0; } #include<string> #include<cstdio> using namespace std; int main(void) { if(string::npos == -1) printf("string::npos=%d ",string::npos); if(string::npos == (unsigned int)(4294967295))printf("string::npos=%u ",string::npos); return 0; } #include<cstdio> #include<string> #include<utility> using namespace std; int main(void) { pair<string,int>p[3]; p[0].first="hello"; p[0].second=1; p[1]=make_pair("world",2); p[2]=pair<string,int>("hhhh",3); for(int i=0;i<3;i++) { printf("%s %d ",p[i].first.c_str(),p[i].second); } return 0; } #include<utility> #include<map> #include<string> using namespace std; int main(void) { map<string,int>mp; mp.insert(make_pair("hello",1)); mp.insert(pair<string,int>("world",2)); for(map<string,int>::iterator it=mp.begin();it!=mp.end();it++) printf("%s %d ",it->first.c_str(),it->second); return 0; } #include<cstdio> #include<algorithm> using namespace std; int main(void) { int a[]={1,2,3,4,5}; do{ printf("%d %d %d %d %d ",a[0],a[1],a[2],a[3],a[4]); }while(next_permutation(a,a+5)); fill(a,a+5,1); printf(" "); do{ printf("%d %d %d %d %d ",a[0],a[1],a[2],a[3],a[4]); }while(next_permutation(a,a+5)); return 0; } #include<cstdio> #include<vector> using namespace std; const int MAXV = 1000; const int INF = 1000000000; const int Inf = 0x3fffffff; int n,G[MAXV][MAXV]; bool vis[MAXV]={false}; void DFS(int u,int depth) { vis[u]=true; for(int v=0;v<n;v++) { if(!vis[v] && G[u][v]!=INT) DFS(v,depth+1); } } void DFSTrave() { for(int u=0;u<n;u++) { if(!vis[u]) DFS(u,1); } } int main(void) { //printf("%d ",INF); //printf("%d ",Inf); return 0; } #include<cstdio> #include<vector> using namespace std; const int MAXV = 1000; const int INF = 0x3fffffff; vector<int>Adj[MAXV]; bool vis[MAXV]={false}; void DFS(int u,int depth) { vis[u]=true; for(int i=0;i<Adj[u].size();i++) { int v=Adj[u][i]; if(!vis[v]) DFS(v,depth+1); } } void DFSTrave() { for(int v=0;v<n;v++) { if(!vis[u]) DFS(u,1); } } int main(void) { return 0; } #include<vector> #include<set> #include<map> #include<cstdio> #include<iostream> #include<string> #include<queue> #include<cstring> using namespace std; const int MAXV = 1000; struct Gang{ string name; int numberOfPerson; Gang(string _name,int _numberOfPerson) { name=_name; numberOfPerson=_numberOfPerson; } friend bool operator<(const Gang &g1,const Gang &g2) { return g1.name<g2.name; } }; queue<Gang>ans; int m,k,n,cnt; map<string,int>NameToInt; map<int,string>IntToName; map<string,int>Gang; int d[MAXV]={0},vis[MAXV]={0}; int G[MAXV][MAXV]={0}; void DFS(int u,int &boss,int &number,int &sumValue) { vis[u]=true; number++; if(d[u]>d[boss]) boss=u; for(int v=0;v<n;v++) { if(G[u][v]!=0) { sumValue+=G[u][v]; G[u][v]=G[v][u]=0; if(vis[v]==0) DFS(v,boss,number,sumValue); } } } void DFSTrave() { for(int u=0;u<n;u++) if(!vis[u]) { int boss=u,number=0,sumValue=0; DFS(u,boss,number,sumValue); printf("test boss = %s number = %d sumValue = %d ",IntToName[boss].c_str(),number,sumValue); if(number>2 && sumValue>k) Gang[IntToName[boss]]=number; } } int main(void) { cin>>m>>k; for(int i=0;i<m;i++) { string person1,person2; int w; cin >> person1 >> person2 >> w; if(NameToInt.find(person1)==NameToInt.end()) { NameToInt[person1]=n; IntToName[n]=person1; n++; } if(NameToInt.find(person2)==NameToInt.end()) { NameToInt[person2]=n; IntToName[n]=person2; n++; } //设置点权值 int u=NameToInt[person1],v=NameToInt[person2]; d[u]+=w; d[v]+=w; //设置边权值 G[u][v]+=w; G[v][u]+=w; } printf(" "); for(map<string,int>::iterator it=NameToInt.begin();it!=NameToInt.end();it++) printf("%s %d ",it->first.c_str(),it->second); printf(" "); for(map<int,string>::iterator it=IntToName.begin();it!=IntToName.end();it++) printf("%d %s ",it->first,it->second.c_str()); printf(" "); for(int i=0;i<n;i++) printf("%d ",d[i]); printf(" "); DFSTrave(); while(!ans.empty()) { Gang temp=ans.front(); ans.pop(); printf("%s %d ",temp.name.c_str(),temp.numberOfPerson); } * printf("sum = %d ",Gang.size()); for(map<string,int>::iterator it=Gang.begin();it!=Gang.end();it++) printf("%s %d ",it->first.c_str(),it->second); return 0; 8 59 AAA BBB 10 BBB AAA 20 AAA CCC 40 DDD EEE 5 EEE DDD 70 FFF GGG 30 GGG HHH 20 HHH FFF 10 } #include<iostream> #include<string> #include<map> using namespace std; const int maxn = 2010; const int INF = 0xFFFFFFF; map<string,int>stringToInt; map<int,string>intToString; map<string,int>Gang; int G[maxn][maxn]={0},weight[maxn]={0}; int n,k,numPerson=0; bool vis[maxn]={false}; void DFS(int u,int &head,int &numMember,int &totalValue) { vis[u]=true; numMember++; if(weight[head]<weight[u]) head=u; for(int v=0;v<numPerson;v++) { if(G[u][v]) { totalValue+=G[u][v]; G[u][v]=G[v][u]=0; if(vis[v]==false) DFS(v,head,numMember,totalValue); } } } void DFSTrave() { for(int u=0;u<numPerson;u++) { if(vis[u]==false) { int head=u,numMember=0,totalValue=0; DFS(u,head,numMember,totalValue); if(numMember>2 && totalValue>k) Gang[intToString[head]]=numMember; } } } int change(string str) { if(stringToInt.find(str)!=stringToInt.end()) return stringToInt[str]; else { stringToInt[str]=numPerson; intToString[numPerson]=str; } return numPerson++; } int main(void) { int w; string str1,str2; cin >> n >> k; for(int i=0;i<n;i++) { cin >> str1 >> str2 >> w; int id1=change(str1); int id2=change(str2); weight[id1]+=w; weight[id2]+=w; G[id1][id2]+=w; G[id2][id1]+=w; } DFSTrave(); printf("%d ",Gang.size()); for(map<string,int>::iterator it=Gang.begin();it!=Gang.end();it++) printf("%s %d ",it->first.c_str(),it->second); return 0; } int n,G[maxn][maxn]; bool inq[maxn]={false}; void BFS(int u) { queue<int>q; q.push(u); inq[u]=true; while(!q.empty()) { u=q.front(); q.pop(); for(int v=0;v<n;v++) { if(inq[v]==false && G[u][v]!=INF) { q.push(v); inq[v]=true; } } } } void BFSTrave() { for(int u=0;u<n;u++) { if(inq[u]==false) BFS(q); } } vector<int>Adj[maxn]; bool vis[maxn]; int n; void BFS(int u) { queue<int>q; q.push(u); vis[u]=true; while(!q.empty()) { u=q.front(); q.pop(); for(int i=0;i<Adj[u].size();i++) { int v=Adj[u][i]; if(vis[v]==false) { q.push(v); vis[v]=true; } } } } void BFSTrave() { for(int u=0;u<n;u++) if(vis[u]==false) BFS(u); } #include<vector> #include<cstdio> #include<cstring> #include<iostream> using namespace std; const int maxn = 1010; int n,m,L,vis[maxn]={false}; vector<int>Adj[maxn]; struct Pos { int v; int layer; Pos(int _v,int _layer) { v=_v,layer=_layer; } }; void BFS(int u,int &cnt) { queue<Pos>q; q.push(Pos(u,0)); vis[u]=true; while(!q.empty()) { Pos pos=q.front(); q.pop(); int u=pos.v,layer=pos.layer; for(int i=0;i<Adj[u].size();i++) { int v=Adj[u][i]; if(!vis[v] && layer+1<=L) { //vis[v]=true; //q.push(Pos(v,layer+1)); //cnt++; vis[v]=true; cnt++; q.push(Pos(v,layer+1)); } } } } int main(void) { cin>>n>>L; for(int i=1;i<=n;i++) { int num,v; cin>>num; for(int j=0;j<num;j++) { cin>>v; Adj[i].push_back(v); } } cin >> m; for(int i=0;i<m;i++) { int s; cin>>s; memset(vis,0,sizeof(vis)); int cnt=0; BFS(s+1,cnt); printf("%d ",cnt); } return 0; } 测试的数据 7 3 3 2 3 4 0 2 5 6 2 3 1 2 3 4 1 4 1 5 2 2 6 #include<queue> #include<vector> #include<cstring> #include<cstdio> using namespace std; const int MAXV=1000; struct Node{ int id,layer; }; vector<Node>Adj[MAXV]; bool vis[MAXV]={false}; int BFS(int s,int L) { int numForward=0; queue<Node>q; Node start; start.id=s; start.layer=0; q.push(start); vis[s]=true; while(!q.empty()) { Node topNode=q.front(); q.pop(); int u=topNode.id; for(int i=0;i<Adj[u].size();i++) { Node next=Adj[u][i]; next.layer=topNode.layer+1; if(!vis[next.id] && next.layer<=L) { q.push(next); vis[next.id]=true; numForward++; } } } return numForward; } int main(void) { Node user; int n,L,numFollow,idFollow; scanf("%d%d",&n,&L); for(int i=1;i<=n;i++) { user.id=i; scanf("%d",&numFollow); for(int j=0;j<numFollow;j++) { scanf("%d",&idFollow); Adj[idFollow].push_back(user); } } int numQuery,s; scanf("%d",&numQuery); for(int i=0;i<numQuery;i++) { memset(vis,0,sizeof(vis)); scanf("%d",&s); int numForward=BFS(s,L); printf("%d ",numForward); } return 0; }