题目描述
给出一个无向图,顶点数为n,边数为m。n<=1000,m<=10000
输入格式
第一行两个整数n,m,接下来有m行,每行两个整数u,v,表示点u到点v有一条边。
输出格式
第i行输出第点i的所有邻接点,邻接点按照度数由小到大输出,如果度数相等,则按照编号有小到大输出。
样例
样例输入
复制5 6
1 2
1 3
1 4
2 3
2 4
2 5
样例输出
复制3 4 2
5 3 4 1
1 2
1 2
2
写作不易,点个赞呗!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
cpp
#include<bits/stdc++.h>
using namespace std;
int n,m,u,v;
vector<int> a[1000005];
bool cmp(int x,int y){
if(a[x].size()==a[y].size()){
return x<y;
}
return a[x].size()<a[y].size();
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>u>>v;
a[u].push_back(v);
a[v].push_back(u);
}
for(int i=1;i<=n;i++){
sort(a[i].begin(),a[i].end(),cmp);
for(auto j:a[i])cout<<j<<" ";
cout<<endl;
}
}