題目鏈接:https://www.jisuanke.com/course/1451/83475
原來vector的clear函數並不釋放內存…
vector<int>k;
k.swap(amap[b]);
swap括號內的是要釋放的vector地址,爆內存wa掉兩次,以下是ac代碼
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n, m, a, b;
scanf("%d%d",&n,&m);
vector<int> amap[n+5];
for(int i = 0; i < n; i++)
amap[i].push_back(i + 1);
while(m--)
{
scanf("%d%d",&a,&b);
if(a != b)
{
a--;
b--;
for(int i = 0; i < amap[b].size(); i++)
amap[a].push_back(amap[b][i]);
vector<int>k;
k.swap(amap[b]);
}
else
;
}
for(int i = 0; i < n; i++)
{
if(amap[i].empty())
;
else
{
int j;
for(j = 0; j < amap[i].size(); j++)
{
printf("%d",amap[i][j]);
if( j != amap[i].size() - 1)
printf(" ");
}
}
printf("\n");
}
return 0;
}