#include <bits/stdc++.h>
using namespace std;
#define fast ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define LL long long int
#define pb push_back
#define mp make_pair
#define PII pair<int,int>
#define PLL pair<LL,LL>
#define PIS pair< int,string>
#define test int t;cin>>t;while(t--)
#define ff first // error: 'std::set<std::pair<long long int, long long int> >::iterator' has no member named 'first'
#define ss second // error: 'std::set<std::pair<long long int, long long int> >::iterator' has no member named 'second'
#define INF 1000000000
#define input(a,n) for(i=1;i<=n;i++)cin>>a[i];
#define output(a,n) for(i=1;i<=n;i++)cout<<a[i]<<" ";
vector< vector<LL> > v(3002, vector<LL>(3002,-1));
set< pair<LL, LL> > se;
set< pair<LL, LL> >::iterator it;
int vis[3002]={0};
void exmin(LL a)
{
LL x,des,val,min=INF;
for(x=0;x<v[a].size();x++)
{
if(v[a][x]<min)
{
val=v[a][x];
des=x;
min=val;
}
}
se.insert(mp(val,des));
}
int main() {
fast
LL n,m,x,i,j,k,wt=0,s;
cin>>n>>m;
vector<int> ve;
for(x=1;x<=n;x++)
ve.pb(x);
for(x=0;x<m;x++)
{
cin>>i>>j>>k;
if(v[i][j]!=-1)
{
if(v[i][j]>k)
{
v[i][j]=k;
v[j][i]=k;
}
}
else
{
v[i][j]=k;
v[j][i]=k;
}
}
cin>>s;
ve.erase(ve.begin()+s-1);
while(ve.size()!=0)
{
for(x=0;x<v[s].size();x++)
{
if(v[s][x]!=-1 && vis[x]!=1)
{
exmin(x);
}
}
/* for(x=0;x<p.size();x++)
{
}*/
it=se.begin();
wt=wt+*(it).ff;
s=*(it).ss;
vis[*(it).ss]=1;
ve.erase(ve.begin()+*(it).ss-1);
se.erase(it);
}
return 0;
}
エラーに直面しています。
プリムのアルゴリズムを実装しようとしています。
行番号を含めることができなかったため、行自体にエラーが付いていました。
申し訳ありませんが、その部分にエラーがあるため「忌憚のない部分」を含めてお手伝いできませんでした。あなたはグローバルセットs
<pair <long long、long long>>は最初にメンバーをサポートしていませんか?
set< pair<LL, LL> > s;
を持っていますが
感謝をされている必要があります!どのように私はそれを逃したことができますが、まだいくつかのエラーに直面して、私のコードを更新しました – Kaustubh