程式如下:
#include<bits/stdc++.h>
using namespace std;
struct _a
{
int val;
set<int> to;
};
int main()
{
int t;
cin>>t;
while(t--)
{
int k;
cin>>k;
_a l[k];
bool f[k];
memset(f,0,sizeof(f));
int ans;
for(int i=0;i<k;i++)
{
cin>>l[i].val;
int r,b;
cin>>r;
if(r!=0) while(r--) cin>>b,b--,l[i].to.insert(b),f[b]=1;
}
int n[k];
memset(n,0,sizeof(n));
//int pos=find(f,f+k,0)-f;
//n[pos]=l[pos].val;
queue<int> q;
//q.push(pos);
for(int i=0;i<k;i++)
{
if(!f[i]) n[i]=l[i].val,q.push(i);
}
while(!q.empty())
{
for(auto i:l[q.front()].to)
{
if(!n[i]) q.push(i),n[i]=n[q.front()]+l[i].val;
else n[i]=max(n[i],n[q.front()]+l[i].val);
}
q.pop();
for(auto i:n) cout<<i<<" ";
cout<<"\n";
}
cout<<*max_element(n,n+k)<<"\n";
}
}
您的答案為: 46 正確答案為: 47
您的答案為: 67 正確答案為: 118
您的答案為: 52 正確答案為: 60
您的答案為: 78 正確答案為: 535
您的答案為: 67 正確答案為: 104
程式如下:2; 2;
#include<bits/stdc++.h>
using namespace std;
struct _a
{
int val;
set to;
};
int main()
{
int t;
cin>>t;
while(t--)
{
int k;
cin>>k;
_a l[k];
bool f[k];
memset(f,0,sizeof(f));
int ans;
for(int i=0;i<k;i++)
{
cin>>l[i].val;
int r,b;
cin>>r;
if(r!=0) while(r--) cin>>b,b--,l[i].to.insert(b),f[b]=1;
}
int n[k];
memset(n,0,sizeof(n));
//int pos=find(f,f+k,0)-f;
//n[pos]=l[pos].val;
queue q;
//q.push(pos);
for(int i=0;i<k;i++)
{
if(!f[i]) n[i]=l[i].val,q.push(i);
}
while(!q.empty())
{
for(auto i:l[q.front()].to)
{
if(!n[i]) q.push(i),n[i]=n[q.front()]+l[i].val;
else n[i]=max(n[i],n[q.front()]+l[i].val);
}
q.pop();
for(auto i:n) cout<<i<<" ";
cout<<"\n";
}
cout<<*max_element(n,n+k)<<"\n";
}
}
您的答案為: 46 正確答案為: 47
您的答案為: 67 正確答案為: 118
您的答案為: 52 正確答案為: 60
您的答案為: 78 正確答案為: 535
您的答案為: 67 正確答案為: 104
當然有阿,不然為什麼會NA(0%)