#include <bits/stdc++.h>
#define pii pair<int,int>
#define ff first
#define ss second
using namespace std;
int main(void){
ios::sync_with_stdio(0),cin.tie(0);
int N;
while (cin>>N){
vector<int> cost(N+1),indeg(N+1,0);
vector<int> g[N+1];
vector<pii> v[N+1];
queue<int> q;
for (int i=1 ; i<=N ; i++) cin>>cost[i];
for (int i=1 ; i<=N ; i++){
int cnt,a,b;
cin>>cnt;
while (cnt--){
cin>>a>>b;
v[i].push_back({a,b});
g[a].push_back(i);
indeg[i] += 1;
}
}
for (int i=1 ; i<=N ; i++) if (!indeg[i]) q.push(i);
while (!q.empty()){
int u = q.front();q.pop();
for (auto [idx,cnt] : v[u]){
cost[u] += cost[idx]*cnt;
}
for (int x:g[u]){
indeg[x] -= 1;
if (!indeg[x]) q.push(x);
}
}
for (int i=1 ; i<=N ; i++) cout<<cost[i]<<"\n";
}
}
搞錯題了 這是lis
#include <bits/stdc++.h>
#define pii pair<int,int>
#define ff first
#define ss second
using namespace std;
bool cmp(pii &a,pii &b){
if (a.ff != b.ff) return a.ff<b.ff;
return a.ss>b.ss;
}
int main(void){
ios::sync_with_stdio(0),cin.tie(0);
int N;
while (cin>>N){
vector<int> lis;
vector<pii> v(N);
for (int i=0 ; i<N ; i++) cin>>v[i].ff>>v[i].ss;
sort(v.begin(),v.end(),cmp);
for (int i=0 ; i<N ; i++){
auto it = lower_bound(lis.begin(),lis.end(),v[i].ss);
if (it == lis.end()) lis.push_back(v[i].ss);
else *it = v[i].ss;
}
cout<<lis.size()<<"\n";
}
}